CVE-2026-107722
KrytyczneCVSS 9.8Streszczenie
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.
Ocena ryzyka
Atakujący może sfałszować tokeny JWT i obejść uwierzytelnianie lub autoryzację, uzyskując dostęp do chronionych zasobów.
Rekomendacja
Należy zaktualizować fast-jwt do wersji 6.3.0 oraz skonfigurować listę dozwolonych algorytmów wyłącznie asymetrycznych, aby uniemożliwić atak.
Inne podatności w fast-jwt
Zobacz wszystkie- 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-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.
Oryginalny opis (angielski, źródło NVD)
fast-jwt provides fast JSON Web Token (JWT) implementation. From 6.2.0 until 6.3.0, fast-jwt can misclassify RSA public-key text as an HMAC secret when the key has non-whitespace content before its PEM header. In src/crypto.js, performDetectPublicKeyAlgorithms trims whitespace but publicKeyPemMatcher remains start-anchored, so comments, control characters, zero-width characters, or wrapper text can prevent PEM detection and reach the HMAC fallback. An attacker who knows the public key bytes can sign arbitrary HS256 claims with that public material when HS256 is inferred or allowed, resulting in authentication or authorization bypass. An asymmetric-only algorithm allowlist prevents the attack. This issue is fixed in version 6.3.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

