CVE-2026-35041
ŚrednieCVSS 4.2Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 18 - wyżej niż 18% wszystkich znanych CVE
Streszczenie
Biblioteka fast-jwt w wersjach od 5.0.0 do 6.2.0 ma podatność na atak typu denial-of-service, gdy opcja weryfikacji allowedAud jest skonfigurowana jako wyrażenie regularne. Ponieważ roszczenie aud jest kontrolowane przez atakującego, spreparowany JWT może wywołać katastrofalne cofanie w silniku regexów JavaScript i wysokie zużycie CPU. Podatność naprawiono w wersji 6.2.1.
Ocena ryzyka
Atakujący może wysyłać spreparowane tokeny JWT, powodując wyczerpanie zasobów CPU i niedostępność usługi. Może to zakłócić działanie aplikacji zależnych od fast-jwt.
Rekomendacja
Zaktualizuj bibliotekę fast-jwt do wersji 6.2.1 lub nowszej. Jeśli to możliwe, unikaj używania wyrażeń regularnych w opcji allowedAud lub ogranicz ich złożoność.
Inne podatności w fast-jwt
Zobacz wszystkie- CVE-2026-107722Krytyczne
fast-jwt od wersji 6.2.0 do 6.3.0 może błędnie zaklasyfikować tekst klucza publicznego RSA jako sekret HMAC, gdy klucz zawiera nie-białe znaki przed nagłówkiem PEM. W src/crypto.js funkcja performDetectPublicKeyAlgorithms przycina białe znaki, ale publicKeyPemMatcher pozostaje zakotwiczony na początku, więc komentarze, znaki kontrolne, znaki o zerowej szerokości lub tekst opakowujący mogą uniemożliwić wykrycie PEM i doprowadzić do użycia HMAC. Atakujący znający bajty klucza publicznego może podpisać dowolne oświadczenia HS256 tym materiałem publicznym, gdy HS256 jest wywnioskowany lub dozwolony, co skutkuje obejściem uwierzytelniania lub autoryzacji. Lista dozwolonych algorytmów tylko asymetrycznych zapobiega atakowi. Problem naprawiono w wersji 6.3.0.
- CVE-2026-44351Krytyczne
W wersjach przed 6.2.4 biblioteka fast-jwt zawiera krytyczną podatność na obejście uwierzytelniania, która pozwala nieautoryzowanym atakującym na fałszowanie dowolnych tokenów JWT uznawanych za autentyczne.
- CVE-2026-107724Wysokie
fast-jwt to szybka implementacja JSON Web Token. W wersji 6.2.4 biblioteka może błędnie zaklasyfikować surowy publiczny klucz JWK/JWKS jako sekret HMAC, ponieważ funkcja performDetectPublicKeyAlgorithms traktuje ciągi niebędące PEM jako materiał klucza symetrycznego. Jeśli HS256 jest dozwolony lub wywnioskowany, atakujący znający dokładne bajty klucza publicznego może użyć ich jako klucza HMAC i utworzyć token z dowolnymi roszczeniami.
- CVE-2026-107723Wysokie
fast-jwt to szybka implementacja JSON Web Token. W wersjach przed 6.3.0 funkcja createVerifier akceptuje prawidłowo podpisany JWT, którego ładunek jest tablicą JSON, ponieważ walidator nie odrzuca tablic i pomija sprawdzanie roszczeń takich jak exp, nbf, iss, aud, sub, jti czy nonce. Atakujący mogący wpłynąć na podpisany token może obejść zabezpieczenia przed wygaśnięciem, wystawcą, odbiorcą, podmiotem, unieważnieniem i powtórzeniem.
- CVE-2026-107721Średnie
fast-jwt to szybka implementacja JSON Web Token (JWT). Przed wersją 6.3.0, createVerifier w fast-jwt akceptuje Infinity dla clockTolerance, ponieważ walidacja opcji sprawdza typ i negatywność, ale nie skończoność. W validateClaimDateValue, nieskończone dodatnie i ujemne modyfikatory sprawiają, że porównania exp i nbf zawsze przechodzą, co pozwala na akceptację wygasłych lub jeszcze nieaktywnych tokenów. Pamięć podręczna weryfikatora również wyprowadza nieskończone granice, więc wpisy utworzone w tej konfiguracji mogą pozostać ważne do czasu wykluczenia. Eksploatacja wymaga administratora aplikacji lub równoważnej ścieżki konfiguracji, aby ustawić clockTolerance na Infinity. Ten problem został naprawiony w wersji 6.3.0.
- CVE-2026-107720Wysokie
fast-jwt to szybka implementacja JSON Web Token. W wersjach przed 6.3.1 funkcja createVerifier akceptuje niepodpisany JWT, gdy klucz jest pustym ciągiem lub null, a lista dozwolonych algorytmów jest niepusta. Fałszywe klucze synchroniczne omijają prepareKeyOrSecret, a pusta sygnatura omija weryfikację, co pozwala atakującemu przesłać token z dowolnymi roszczeniami bez znajomości klucza podpisującego.
- CVE-2026-107719Średnie
fast-jwt to szybka implementacja JSON Web Token (JWT). Przed wersją 6.3.4, pamięć podręczna createVerifier w fast-jwt może nadal akceptować wcześniej ważny, podpisany JWT po jego czasie exp, gdy buforowanie jest włączone, a token ma exp, ale nie ma iat. W src/verifier.js, cacheSet wyprowadza termin ważności pamięci podręcznej tylko wtedy, gdy obecne jest iat, więc pamięć podręczna używa cacheTTL, a późniejsze trafienie w pamięci podręcznej zwraca zapisany payload przed ponownym sprawdzeniem wygaśnięcia przez verifyToken. Atakujący, który może powtórzyć ten sam buforowany token nośnika, może przedłużyć dostęp do czasu wygaśnięcia wpisu w pamięci podręcznej, ale nie może sfałszować tokena przez ten problem. Ten problem został naprawiony w wersji 6.3.4.
- CVE-2026-35040Średnie
W bibliotece fast-jwt przed wersją 6.2.1 użycie modyfikatorów /g lub /y w wyrażeniach regularnych opcji allowedAud, allowedIss, allowedSub, allowedJti lub allowedNonce powoduje, że co drugi test weryfikacji kończy się niepowodzeniem niezależnie od ważności tokenu. Nie pozwala to na akceptację nieprawidłowych tokenów, lecz powoduje odrzucanie poprawnych tokenów w naprzemiennym wzorcu.
Oryginalny opis (angielski, źródło NVD)
fast-jwt provides fast JSON Web Token (JWT) implementation. From 5.0.0 to 6.2.0, a denial-of-service condition exists in fast-jwt when the allowedAud verification option is configured using a regular expression. Because the aud claim is attacker-controlled and the library evaluates it against the supplied RegExp, a crafted JWT can trigger catastrophic backtracking in the JavaScript regex engine, resulting in significant CPU consumption during verification. This vulnerability is fixed in 6.2.1.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

