HIGH🇬🇧 English

CVE-2026-49852

Pominięcie weryfikacji podpisu JWT w bibliotece joserfc (pusty klucz HMAC)

CVSS 8.7v4.0pub. 2026-07-17upd. 2026-07-23

Biblioteka joserfc w wersjach przed 1.6.8 akceptuje tokeny JWT podpisane przez atakującego z użyciem pustego klucza HMAC, gdy klucz weryfikacyjny dostarczony przez aplikację to pusty ciąg znaków lub None. Podatność umożliwia całkowite obejście mechanizmu uwierzytelniania opartego na tokenach JWT.

Pokaż oryginał (EN)

joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standards. Prior to 1.6.8, joserfc.jwt.decode accepts attacker-forged HMAC-signed tokens when the caller-supplied verification key is the empty string or None, because HMACAlgorithm.sign and HMACAlgorithm.verify in src/joserfc/_rfc7518/jws_algs.py pass the output of OctKey.get_op_key(...) to hmac.new(...) and OctKey.import_key in src/joserfc/_rfc7518/oct_key.py only emits a SecurityWarning for keys shorter than 14 bytes without rejecting zero-length input. This issue is fixed in version 1.6.8.

🤖 Analiza AI
Jak działa

Funkcja joserfc.jwt.decode nie odrzuca kluczy zerowej długości — moduł OctKey.import_key emituje jedynie ostrzeżenie (SecurityWarning) dla kluczy krótszych niż 14 bajtów, ale nie blokuje kluczy o długości zero. W rezultacie HMACAlgorithm.sign oraz HMACAlgorithm.verify przekazują wynik OctKey.get_op_key() bezpośrednio do hmac.new(), co pozwala atakującemu samodzielnie wygenerować poprawnie weryfikowany token HMAC przy użyciu pustego sekretu. Aplikacja wywołująca joserfc.jwt.decode z kluczem będącym pustym stringiem lub None nieświadomie akceptuje sfałszowane tokeny jako autentyczne.

Skutki

Atakujący może sfałszować dowolny token JWT i podać się za innego użytkownika (w tym administratora), skutecznie omijając uwierzytelnianie oraz wszelkie mechanizmy autoryzacji oparte na tokenach w aplikacji korzystającej z biblioteki joserfc.

Mitygacja

Należy zaktualizować bibliotekę joserfc do wersji 1.6.8 lub nowszej, która zawiera poprawkę odrzucającą klucze zerowej długości na poziomie OctKey.import_key. Dodatkowo zaleca się przegląd kodu aplikacji pod kątem miejsc, w których klucz weryfikacyjny JWT może być pusty lub None, oraz wdrożenie walidacji klucza przed wywołaniem joserfc.jwt.decode.

Kogo dotyczy

Biblioteka joserfc (Python) we wszystkich wersjach przed 1.6.8

Uwagi

Podatność dotyczy scenariusza, w którym aplikacja przekazuje pusty klucz weryfikacyjny — co może wystąpić np. przy błędnej konfiguracji zmiennych środowiskowych lub braku inicjalizacji sekretu. Poprawka dostępna w commicie 86d00910b2b2d2d07503fee9b572906daefab7f1 w repozytorium authlib/joserfc.

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Auth Bypass
CWE
Referencje