CVE-2026-44351
KrytyczneCVSS 9.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 16 - wyżej niż 16% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Organizacje mogą być narażone na nieautoryzowany dostęp i manipulację danymi, co może prowadzić do poważnych naruszeń bezpieczeństwa.
Rekomendacja
Zaleca się aktualizację biblioteki fast-jwt do wersji 6.2.4 lub nowszej, aby usunąć tę podatność.
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-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-35041Średnie
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.
- 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. Prior to 6.2.4, a critical authentication-bypass vulnerability in fast-jwt's async key-resolver flow allows any unauthenticated attacker to forge arbitrary JWTs that are accepted as authentic. When the application's key resolver returns an empty string (''), for example via the common keys[decoded.header.kid] || '' JWKS-style fallback, fast-jwt converts it to a zero-length Buffer, hands it to crypto.createSecretKey, derives allowedAlgorithms = ['HS256','HS384','HS512'] from it, and then verifies the token's signature against an empty-key HMAC. The attacker simply computes HMAC-SHA256(key='', input='${header}.${payload}'), which Node accepts without complaint — and the verifier returns the attacker-chosen payload (sub, admin, scopes, etc.) as authentic. This vulnerability is fixed in 6.2.4.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

