W frameworku Symfony wykryto podatność polegającą na nieprawidłowej weryfikacji tokenów JWT w komponencie OidcTokenHandler. Atakujący może dostarczyć poprawnie podpisany token JWT, który pomija kluczowe claims (audience, issuer, expiry), a mimo to przejdzie weryfikację.
▸ Pokaż oryginał (EN)
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 6.4.40, 7.4.12, and 8.0.12, OidcTokenHandler::verifyClaims() registered audience (aud), issuer (iss), and expiry (exp) checkers but did not pass the mandatory claims list to ClaimCheckerManager::check(), so a validly signed JWT that omitted those claims could pass verification. This issue is fixed in versions 6.4.40, 7.4.12, and 8.0.12.
Metoda OidcTokenHandler::verifyClaims() rejestruje sprawdzanie claims: audience (aud), issuer (iss) oraz expiry (exp), jednak nie przekazuje listy obowiązkowych claims jako parametru do ClaimCheckerManager::check(). W rezultacie token JWT, który jest poprawnie podpisany kryptograficznie, ale nie zawiera wymaganych claims, jest traktowany jako prawidłowy. Odpowiada to błędom CWE-345 (niewystarczająca weryfikacja autentyczności danych) oraz CWE-1287 (nieprawidłowa walidacja wartości wejściowych).
Atakujący może ominąć kontrole autoryzacji oparte na mechanizmie OIDC, dostarczając spreparowany token JWT pozbawiony wymaganych claims (np. bez pola exp, co eliminuje weryfikację wygaśnięcia tokenu). Może to prowadzić do nieautoryzowanego dostępu do zasobów aplikacji.
Należy zaktualizować Symfony do wersji 6.4.40, 7.4.12 lub 8.0.12, w których problem został naprawiony poprzez prawidłowe przekazanie listy obowiązkowych claims do ClaimCheckerManager::check().
Symfony w wersjach wcześniejszych niż 6.4.40, 7.4.12 oraz 8.0.12 — dotyczy aplikacji korzystających z komponentu OidcTokenHandler do weryfikacji tokenów JWT.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/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:XSensiolabs Symfony
APPSensiolabs6.3.0 – 6.4.40 (bez)7.4.0 – 7.4.12 (bez)8.0.0 – 8.0.12 (bez)
Powiązane podatności
Symfony X509Authenticator — obejście uwierzytelniania przez błędny regex DN
Symfony VarExporter — nieprawidłowe escapowanie umożliwia RCE
Symfony: zdalne wykonanie kodu przez serializację adaptera cache
Nieprawidłowa kontrola dostępu w komponencie Password validator — Symfony
SQL Injection i RCE w Symfony przez niezwalidowane identyfikatory serwisów