CVE-2026-108082
Publiée le 2026-10-15 · Dernière modification le 2026-10-16
Les versions de Symfony antérieures à 5.4.54, 6.4.46, 7.4.19 et 8.1.7 sont concernées. Ce framework PHP est largement utilisé pour construire des applications web et gérer les requêtes HTTP. La faille réside dans la manière dont le framework analyse l'en-tête `Cache-Control`, où un motif spécifique d'espaces blancs force le moteur d'expressions régulières à entrer dans une boucle de calculs exponentielle.
Un attaquant peut envoyer une requête HTTP spécialement conçue pour épuiser les ressources CPU de votre serveur, entraînant un déni de service. Cette attaque est facile à exécuter car elle ne nécessite ni authentification, ni interaction de l'utilisateur, et peut être déclenchée par tout utilisateur distant ayant un accès réseau à votre serveur web. Bien qu'elle ne compromette pas vos données ni l'intégrité du système, elle peut rendre votre application indisponible.
DÉTAIL DU VECTEUR CVSS
RÉFÉRENCES
Description officielle du NVD (en anglais)
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to versions 5.4.54, 6.4.46, 7.4.19, and 8.1.7, HeaderUtils::split() parsed header values with a pattern whose token alternative also matched whitespace, followed by a (?<!\s) lookbehind. A run of whitespace placed before a separator could be divided among the iterations of the enclosing repetition in exponentially many ways, and the engine tried all of them before settling. HeaderBag calls it for the Cache-Control header whenever a Request is built, so any application handling HTTP requests is reachable, with no authentication. A single request carrying such a header costs close to a second of CPU (813 ms for a run of 17 spaces in an 8 KB header on PHP 8.5, doubling with each extra space). From 18 spaces on, preg_match_all() gives up at pcre.backtrack_limit and split() returns an empty array, so every directive of the header is silently dropped. This issue affects symfony/http-foundation v4.1.0-BETA1 through v5.4.53, v6.0.0-BETA1 through v6.4.45, v7.0.0-BETA1 through v7.4.18, and v8.0.0-BETA1 through v8.1.6.