Podatność w komponencie X509Authenticator frameworka Symfony pozwala atakującemu posiadającemu zaufany certyfikat X.509 na uwierzytelnienie się jako inny użytkownik (ofiara). Błąd wynika z użycia niekotwiczonego wyrażenia regularnego podczas parsowania pola Distinguished Name certyfikatu, co klasyfikuje go jako CWE-290 (Authentication Bypass by Spoofing).
▸ Pokaż oryginał (EN)
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 5.4.52, 6.4.40, 7.4.12, and 8.0.12, X509Authenticator extracts the user identifier from $_SERVER['SSL_CLIENT_S_DN'] with an unanchored regex that matches emailAddress= anywhere in the distinguished name, allowing an attacker with a trusted certificate containing emailAddress=victim inside another RDN value such as CN to authenticate as the victim. This issue is fixed in versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12.
Komponent X509Authenticator pobiera identyfikator użytkownika ze zmiennej środowiskowej $_SERVER['SSL_CLIENT_S_DN'], stosując wyrażenie regularne wyszukujące wartość emailAddress= w dowolnym miejscu ciągu Distinguished Name (DN). Ponieważ regex nie jest zakotwiczony, atakujący może uzyskać zaufany certyfikat, w którym wartość emailAddress=ofiara@domena.pl jest osadzona wewnątrz innego atrybutu RDN — np. w polu CN (Common Name). Mechanizm uwierzytelniania błędnie odczyta tę wartość jako adres e-mail właściciela certyfikatu i zaloguje atakującego na konto ofiary.
Atakujący z dostępem do zaufanego certyfikatu X.509 (wystawionego przez zaufane CA) może podszyć się pod dowolnego użytkownika aplikacji i uzyskać nieautoryzowany dostęp do jego konta oraz zasobów, do których ma on uprawnienia.
Należy zaktualizować Symfony do wersji 5.4.52, 6.4.40, 7.4.12 lub 8.0.12 (zgodnie z używaną gałęzią). Patche dostępne są w oficjalnych repozytoriach projektu na GitHub.
Sensiolabs Symfony w wersjach przed 5.4.52, 6.4.40, 7.4.12 oraz 8.0.12 — dotyczy aplikacji korzystających z komponentu X509Authenticator.
Podatność wymaga, aby atakujący posiadał certyfikat wystawiony przez CA zaufane przez serwer (warunek AT:P w wektorze CVSS). Podatność nie dotyczy aplikacji nieużywających uwierzytelniania opartego na certyfikatach X.509 (X509Authenticator).
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/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:XSensiolabs Symfony
APPSensiolabs< 5.4.526.0.0 – 6.4.40 (bez)7.0.0 – 7.4.12 (bez)8.0.0 – 8.0.12 (bez)
Powiązane podatności
Symfony: zdalne wykonanie kodu przez serializację adaptera cache
Symfony VarExporter — nieprawidłowe escapowanie umożliwia RCE
Nieprawidłowa kontrola dostępu w komponencie Password validator — Symfony
SQL Injection i RCE w Symfony przez niezwalidowane identyfikatory serwisów
Symfony: SQL injection i XSS przez niezwalidowane metody HTTP