W parserze YAML frameworka Symfony brakuje limitu głębokości rekurencji podczas przetwarzania głęboko zagnieżdżonych struktur. Atakujący może dostarczyć spreparowany dokument YAML, który wyczerpie stos PHP i spowoduje awarię procesu roboczego (DoS).
▸ 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, when the parser is exposed to attacker-controlled input, deeply nested mappings or sequences cause both the block-level (Parser::parseBlock()) and inline (Inline::parseSequence() / Inline::parseMapping()) parsers to recurse without a depth limit. A crafted document exhausts the PHP stack and crashes the worker. This issue is fixed in versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12.
Zarówno parser blokowy (Parser::parseBlock()), jak i parsery inline (Inline::parseSequence() oraz Inline::parseMapping()) wywołują się rekurencyjnie bez żadnego ograniczenia głębokości. Gdy parser przetwarza dane kontrolowane przez atakującego — np. spreparowany dokument YAML z ekstremalnie głębokim zagnieżdżeniem mapowań lub sekwencji — stos wywołań PHP zostaje wyczerpany. Skutkuje to niekontrolowanym zakończeniem działania procesu (crash workera aplikacji).
Atakujący bez uwierzytelnienia może trwale lub powtarzalnie powodować awarię procesu obsługującego żądania, co prowadzi do pełnej niedostępności aplikacji (Denial of Service).
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 oficjalnym repozytorium GitHub Symfony (tagi v5.4.52, v6.4.40, v7.4.12, v8.0.12). Dodatkowo warto ograniczyć powierzchnię ataku poprzez unikanie przetwarzania YAML z niezaufanych źródeł tam, gdzie jest to możliwe.
Symfony w wersjach wcześniejszych niż 5.4.52, 6.4.40, 7.4.12 oraz 8.0.12.
Podatność dotyczy wyłącznie komponentu parsera YAML w Symfony. Wektor ataku (AT:P) sugeruje, że warunki do wywołania podatności wymagają spełnienia dodatkowych założeń — aplikacja musi eksponować parser YAML na dane kontrolowane przez atakującego.
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/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 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