CVE-2026-110024
ŚrednieCVSS 6.8Streszczenie
W @fastify/jwt w wersjach przed 10.2.5 metody sign i verify zastępują globalne ustawienia domyślne opcjami przekazanymi w wywołaniu, zamiast je scalać. Powoduje to pominięcie zabezpieczeń czasowych, takich jak wygaśnięcie tokenu i maksymalny wiek tokenu, przez co tokeny nigdy nie wygasają.
Ocena ryzyka
Tokeny JWT bez daty wygaśnięcia mogą być używane bezterminowo, co znacząco zwiększa ryzyko nieautoryzowanego dostępu w przypadku wycieku tokenu. Organizacje korzystające z tego pluginu są narażone na trwałe przejęcie sesji.
Rekomendacja
Należy zaktualizować @fastify/jwt do wersji 10.2.5 lub nowszej, która naprawia problem. Dodatkowo zaleca się audyt istniejących tokenów pod kątem braku roszczenia exp.
Inne podatności w @fastify/jwt
Zobacz wszystkie- CVE-2026-107275Średnie
@fastify/jwt to wtyczka JSON Web Token dla frameworka Fastify. W wersjach przed 10.2.3, czas przekazany do expiresIn, notBefore lub maxAge, którego parser nie może odczytać (np. złożony okres, jednostka miesiąca, czas trwania ISO 8601, przecinek dziesiętny lub wartość z białymi znakami), jest po cichu pomijany zamiast odrzucany. Na ścieżce podpisywania powoduje to token bez wygaśnięcia, a na ścieżce weryfikacji maxAge przestaje być egzekwowane, więc token, który powinien być odrzucony ze względu na wiek, jest akceptowany. Problem naprawiono w wersji 10.2.3.
- CVE-2026-18500Wysokie
W @fastify/jwt, wtyczce JSON Web Token dla Fastify, w wersjach przed 10.2.2, klucz weryfikacyjny przekazany do request.jwtVerify({ key }) jest nadpisywany przez globalnie skonfigurowany sekret, ponieważ scalanie opcji stosuje globalny klucz jako ostatni. Aplikacje używające różnych kluczy dla różnych domen autoryzacji mogą akceptować tokeny podpisane globalnym kluczem na trasach wymagających innego klucza, co pozwala zwykłemu uwierzytelnionemu użytkownikowi przekroczyć granicę zaufania opartą na kluczu. Problem naprawiono w wersji 10.2.2.
Oryginalny opis (angielski, źródło NVD)
@fastify/jwt is a JWT utility plugin for Fastify. In versions prior to 10.2.5, the top-level sign and verify methods replace the globally configured defaults with the per-call options instead of merging them, so passing any per-call option silently drops every global default that the call does not restate, including temporal protections such as token expiration and maximum accepted token age. A token signed this way carries no expiration claim and never expires, and verification stops enforcing a configured maximum age, so stale or never-expiring tokens are accepted. The route-level decorators for signing and verifying already merge options and are not affected. The issue is fixed in @fastify/jwt 10.2.5, and users should upgrade to 10.2.5 or later.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

