{"id":"GHSA-r925-mgvr-h9cc","summary":"Symfony: ReDoS in HeaderUtils::split() Reachable Through the Cache-Control Request Header","details":"### Description\n\n`HeaderUtils::split()` parsed header values with a pattern whose token alternative also matched whitespace, followed by a `(?\u003c!\\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.\n\nA 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.\n\n### Resolution\n\nThe pattern now consumes whitespace only when more of the value follows it, so a value can no longer end on whitespace, nothing has to be given back, and every quantifier is possessive. The first release of this fix broke splitting on a whitespace separator: `HeaderUtils::split('foo bar', ' ')` returned a single value in 6.4.46 to 6.4.47, 7.4.19 to 7.4.20 and 8.1.7 to 8.1.8. Whitespace characters used as separators are now left out of the whitespace branch, which 6.4.48, 7.4.21 and 8.1.9 contain.\n\nThe patches for this issue are available [here](https://github.com/symfony/symfony/commit/343a1772ce6ac03e48b228d2d7168d19750e3f36) for branch 5.4 (and forward-ported to 6.4, 7.4, 8.1 and 8.2).\n\n### Credits\n\nSymfony would like to thank [r3verii](https://github.com/r3verii) for reporting the issue and Nicolas Grekas for providing the fix.\n\nSymfony would also like to thank [Bruno Dias](https://github.com/cx-bruno-dias) from Checkmarx for his help getting a CVE assigned.","aliases":["CVE-2026-108082"],"modified":"2026-10-27T19:15:22.507345290Z","published":"2026-10-27T19:01:39Z","database_specific":{"severity":"HIGH","github_reviewed":true,"github_reviewed_at":"2026-10-27T19:01:39Z","nvd_published_at":"2026-10-15T15:17:22Z","cwe_ids":["CWE-1333"]},"references":[{"type":"WEB","url":"https://github.com/symfony/symfony/security/advisories/GHSA-r925-mgvr-h9cc"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-108082"},{"type":"WEB","url":"https://github.com/symfony/symfony/pull/66048"},{"type":"WEB","url":"https://github.com/symfony/symfony/pull/66491"},{"type":"WEB","url":"https://github.com/symfony/symfony/commit/343a1772ce6ac03e48b228d2d7168d19750e3f36"},{"type":"WEB","url":"https://github.com/symfony/symfony/commit/9ffa802e5d7e9fb8ba95eeefd27e863e83b1baca"},{"type":"WEB","url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/http-foundation/CVE-2026-108082.yaml"},{"type":"WEB","url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2026-108082.yaml"},{"type":"PACKAGE","url":"https://github.com/symfony/symfony"},{"type":"WEB","url":"https://github.com/symfony/symfony/releases/tag/v5.4.54"},{"type":"WEB","url":"https://github.com/symfony/symfony/releases/tag/v6.4.48"},{"type":"WEB","url":"https://github.com/symfony/symfony/releases/tag/v7.4.21"},{"type":"WEB","url":"https://github.com/symfony/symfony/releases/tag/v8.1.9"},{"type":"WEB","url":"https://symfony.com/blog/cve-2026-108082-redos-in-headerutils-split-reachable-through-the-cache-control-request-header"},{"type":"WEB","url":"https://symfony.com/cve-2026-108082"}],"affected":[{"package":{"name":"symfony/http-foundation","ecosystem":"Packagist","purl":"pkg:composer/symfony/http-foundation"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"6.0.1"},{"fixed":"6.4.46"}]}],"versions":["v6.0.1","v6.0.10","v6.0.11","v6.0.12","v6.0.13","v6.0.14","v6.0.15","v6.0.16","v6.0.17","v6.0.19","v6.0.2","v6.0.20","v6.0.3","v6.0.5","v6.0.6","v6.0.7","v6.0.8","v6.0.9","v6.1.0","v6.1.0-BETA1","v6.1.0-BETA2","v6.1.0-RC1","v6.1.1","v6.1.11","v6.1.12","v6.1.2","v6.1.3","v6.1.4","v6.1.5","v6.1.6","v6.1.7","v6.1.8","v6.1.9","v6.2.0","v6.2.0-BETA1","v6.2.0-BETA3","v6.2.0-RC1","v6.2.1","v6.2.10","v6.2.11","v6.2.12","v6.2.13","v6.2.2","v6.2.5","v6.2.6","v6.2.7","v6.2.8","v6.3.0","v6.3.0-BETA1","v6.3.0-BETA3","v6.3.0-RC1","v6.3.1","v6.3.11","v6.3.12","v6.3.2","v6.3.4","v6.3.5","v6.3.6","v6.3.7","v6.3.8","v6.3.9","v6.4.0","v6.4.0-BETA1","v6.4.0-BETA2","v6.4.0-BETA3","v6.4.0-RC1","v6.4.0-RC2","v6.4.10","v6.4.12","v6.4.13","v6.4.14","v6.4.15","v6.4.16","v6.4.18","v6.4.2","v6.4.21","v6.4.22","v6.4.23","v6.4.24","v6.4.25","v6.4.26","v6.4.28","v6.4.29","v6.4.3","v6.4.30","v6.4.31","v6.4.32","v6.4.33","v6.4.34","v6.4.35","v6.4.4","v6.4.41","v6.4.42","v6.4.43","v6.4.44","v6.4.45","v6.4.7","v6.4.8"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-r925-mgvr-h9cc/GHSA-r925-mgvr-h9cc.json"}},{"package":{"name":"symfony/http-foundation","ecosystem":"Packagist","purl":"pkg:composer/symfony/http-foundation"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.0.0"},{"fixed":"7.4.19"}]}],"versions":["v7.0.0","v7.0.10","v7.0.3","v7.0.4","v7.0.6","v7.0.7","v7.0.8","v7.1.0","v7.1.0-BETA1","v7.1.0-RC1","v7.1.1","v7.1.10","v7.1.11","v7.1.3","v7.1.5","v7.1.6","v7.1.7","v7.1.8","v7.1.9","v7.2.0","v7.2.0-BETA1","v7.2.0-BETA2","v7.2.0-RC1","v7.2.2","v7.2.3","v7.2.5","v7.2.6","v7.2.7","v7.2.8","v7.2.9","v7.3.0","v7.3.0-BETA1","v7.3.0-BETA2","v7.3.0-RC1","v7.3.1","v7.3.10","v7.3.11","v7.3.2","v7.3.3","v7.3.4","v7.3.5","v7.3.6","v7.3.7","v7.3.8","v7.3.9","v7.4.0","v7.4.0-BETA1","v7.4.0-BETA2","v7.4.0-RC1","v7.4.1","v7.4.13","v7.4.14","v7.4.15","v7.4.16","v7.4.17","v7.4.18","v7.4.3","v7.4.4","v7.4.5","v7.4.6","v7.4.7","v7.4.8"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-r925-mgvr-h9cc/GHSA-r925-mgvr-h9cc.json"}},{"package":{"name":"symfony/http-foundation","ecosystem":"Packagist","purl":"pkg:composer/symfony/http-foundation"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.0.0"},{"fixed":"8.1.7"}]}],"versions":["v8.0.0","v8.0.1","v8.0.13","v8.0.14","v8.0.15","v8.0.3","v8.0.4","v8.0.5","v8.0.6","v8.0.7","v8.0.8","v8.1.0","v8.1.0-BETA1","v8.1.0-BETA3","v8.1.0-RC1","v8.1.1","v8.1.2","v8.1.4","v8.1.5","v8.1.6"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-r925-mgvr-h9cc/GHSA-r925-mgvr-h9cc.json"}},{"package":{"name":"symfony/symfony","ecosystem":"Packagist","purl":"pkg:composer/symfony/symfony"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"6.0.1"},{"fixed":"6.4.46"}]}],"versions":["v6.0.1","v6.0.10","v6.0.11","v6.0.12","v6.0.13","v6.0.14","v6.0.15","v6.0.16","v6.0.17","v6.0.18","v6.0.19","v6.0.2","v6.0.20","v6.0.3","v6.0.4","v6.0.5","v6.0.6","v6.0.7","v6.0.8","v6.0.9","v6.1.0","v6.1.0-BETA1","v6.1.0-BETA2","v6.1.0-RC1","v6.1.1","v6.1.10","v6.1.11","v6.1.12","v6.1.2","v6.1.3","v6.1.4","v6.1.5","v6.1.6","v6.1.7","v6.1.8","v6.1.9","v6.2.0","v6.2.0-BETA1","v6.2.0-BETA2","v6.2.0-BETA3","v6.2.0-RC1","v6.2.0-RC2","v6.2.1","v6.2.10","v6.2.11","v6.2.12","v6.2.13","v6.2.14","v6.2.2","v6.2.3","v6.2.4","v6.2.5","v6.2.6","v6.2.7","v6.2.8","v6.2.9","v6.3.0","v6.3.0-BETA1","v6.3.0-BETA2","v6.3.0-BETA3","v6.3.0-RC1","v6.3.0-RC2","v6.3.1","v6.3.10","v6.3.11","v6.3.12","v6.3.2","v6.3.3","v6.3.4","v6.3.5","v6.3.6","v6.3.7","v6.3.8","v6.3.9","v6.4.0","v6.4.0-BETA1","v6.4.0-BETA2","v6.4.0-BETA3","v6.4.0-RC1","v6.4.0-RC2","v6.4.1","v6.4.10","v6.4.11","v6.4.12","v6.4.13","v6.4.14","v6.4.15","v6.4.16","v6.4.17","v6.4.18","v6.4.19","v6.4.2","v6.4.20","v6.4.21","v6.4.22","v6.4.23","v6.4.24","v6.4.25","v6.4.26","v6.4.27","v6.4.28","v6.4.29","v6.4.3","v6.4.30","v6.4.31","v6.4.32","v6.4.33","v6.4.34","v6.4.35","v6.4.36","v6.4.37","v6.4.38","v6.4.39","v6.4.4","v6.4.40","v6.4.41","v6.4.42","v6.4.43","v6.4.44","v6.4.45","v6.4.5","v6.4.6","v6.4.7","v6.4.8","v6.4.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-r925-mgvr-h9cc/GHSA-r925-mgvr-h9cc.json"}},{"package":{"name":"symfony/symfony","ecosystem":"Packagist","purl":"pkg:composer/symfony/symfony"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.0.0"},{"fixed":"7.4.19"}]}],"versions":["v7.0.0","v7.0.1","v7.0.10","v7.0.2","v7.0.3","v7.0.4","v7.0.5","v7.0.6","v7.0.7","v7.0.8","v7.0.9","v7.1.0","v7.1.0-BETA1","v7.1.0-RC1","v7.1.1","v7.1.10","v7.1.11","v7.1.2","v7.1.3","v7.1.4","v7.1.5","v7.1.6","v7.1.7","v7.1.8","v7.1.9","v7.2.0","v7.2.0-BETA1","v7.2.0-BETA2","v7.2.0-RC1","v7.2.1","v7.2.2","v7.2.3","v7.2.4","v7.2.5","v7.2.6","v7.2.7","v7.2.8","v7.2.9","v7.3.0","v7.3.0-BETA1","v7.3.0-BETA2","v7.3.0-RC1","v7.3.1","v7.3.10","v7.3.11","v7.3.2","v7.3.3","v7.3.4","v7.3.5","v7.3.6","v7.3.7","v7.3.8","v7.3.9","v7.4.0","v7.4.0-BETA1","v7.4.0-BETA2","v7.4.0-RC1","v7.4.0-RC2","v7.4.0-RC3","v7.4.1","v7.4.10","v7.4.11","v7.4.12","v7.4.13","v7.4.14","v7.4.15","v7.4.16","v7.4.17","v7.4.18","v7.4.2","v7.4.3","v7.4.4","v7.4.5","v7.4.6","v7.4.7","v7.4.8","v7.4.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-r925-mgvr-h9cc/GHSA-r925-mgvr-h9cc.json"}},{"package":{"name":"symfony/symfony","ecosystem":"Packagist","purl":"pkg:composer/symfony/symfony"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.0.0"},{"fixed":"8.1.7"}]}],"versions":["v8.0.0","v8.0.1","v8.0.10","v8.0.11","v8.0.12","v8.0.13","v8.0.14","v8.0.15","v8.0.16","v8.0.2","v8.0.3","v8.0.4","v8.0.5","v8.0.6","v8.0.7","v8.0.8","v8.0.9","v8.1.0","v8.1.0-BETA1","v8.1.0-BETA2","v8.1.0-BETA3","v8.1.0-RC1","v8.1.1","v8.1.2","v8.1.3","v8.1.4","v8.1.5","v8.1.6"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-r925-mgvr-h9cc/GHSA-r925-mgvr-h9cc.json"}},{"package":{"name":"symfony/http-foundation","ecosystem":"Packagist","purl":"pkg:composer/symfony/http-foundation"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.1.0"},{"fixed":"5.4.54"}]}],"versions":["v4.1.0","v4.1.1","v4.1.10","v4.1.11","v4.1.12","v4.1.2","v4.1.3","v4.1.4","v4.1.5","v4.1.6","v4.1.7","v4.1.8","v4.1.9","v4.2.0","v4.2.0-BETA1","v4.2.0-BETA2","v4.2.0-RC1","v4.2.1","v4.2.10","v4.2.11","v4.2.12","v4.2.2","v4.2.3","v4.2.4","v4.2.5","v4.2.6","v4.2.7","v4.2.8","v4.2.9","v4.3.0","v4.3.0-BETA1","v4.3.0-BETA2","v4.3.0-RC1","v4.3.1","v4.3.10","v4.3.11","v4.3.2","v4.3.3","v4.3.4","v4.3.5","v4.3.6","v4.3.7","v4.3.8","v4.3.9","v4.4.0","v4.4.0-BETA1","v4.4.0-BETA2","v4.4.0-RC1","v4.4.1","v4.4.10","v4.4.11","v4.4.12","v4.4.13","v4.4.14","v4.4.15","v4.4.16","v4.4.17","v4.4.18","v4.4.19","v4.4.2","v4.4.20","v4.4.22","v4.4.23","v4.4.25","v4.4.26","v4.4.27","v4.4.29","v4.4.3","v4.4.30","v4.4.33","v4.4.34","v4.4.36","v4.4.37","v4.4.38","v4.4.39","v4.4.4","v4.4.41","v4.4.42","v4.4.43","v4.4.44","v4.4.45","v4.4.46","v4.4.47","v4.4.48","v4.4.49","v4.4.5","v4.4.6","v4.4.7","v4.4.8","v4.4.9","v5.0.0","v5.0.0-BETA1","v5.0.0-BETA2","v5.0.0-RC1","v5.0.1","v5.0.10","v5.0.11","v5.0.2","v5.0.3","v5.0.4","v5.0.5","v5.0.6","v5.0.7","v5.0.8","v5.0.9","v5.1.0","v5.1.0-BETA1","v5.1.0-RC1","v5.1.0-RC2","v5.1.1","v5.1.10","v5.1.11","v5.1.2","v5.1.3","v5.1.4","v5.1.5","v5.1.6","v5.1.7","v5.1.8","v5.1.9","v5.2.0","v5.2.0-BETA1","v5.2.0-BETA2","v5.2.0-BETA3","v5.2.0-RC1","v5.2.0-RC2","v5.2.1","v5.2.10","v5.2.11","v5.2.12","v5.2.14","v5.2.2","v5.2.3","v5.2.4","v5.2.7","v5.2.8","v5.3.0","v5.3.0-BETA1","v5.3.0-BETA2","v5.3.0-BETA3","v5.3.0-RC1","v5.3.1","v5.3.10","v5.3.11","v5.3.13","v5.3.14","v5.3.2","v5.3.3","v5.3.4","v5.3.6","v5.3.7","v5.4.0","v5.4.0-BETA1","v5.4.0-RC1","v5.4.1","v5.4.10","v5.4.11","v5.4.12","v5.4.13","v5.4.14","v5.4.15","v5.4.16","v5.4.17","v5.4.19","v5.4.2","v5.4.20","v5.4.21","v5.4.22","v5.4.23","v5.4.24","v5.4.25","v5.4.26","v5.4.28","v5.4.3","v5.4.30","v5.4.31","v5.4.32","v5.4.34","v5.4.35","v5.4.38","v5.4.39","v5.4.40","v5.4.42","v5.4.44","v5.4.45","v5.4.46","v5.4.48","v5.4.5","v5.4.50","v5.4.6","v5.4.8","v5.4.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-r925-mgvr-h9cc/GHSA-r925-mgvr-h9cc.json"}},{"package":{"name":"symfony/symfony","ecosystem":"Packagist","purl":"pkg:composer/symfony/symfony"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.1.0"},{"fixed":"5.4.54"}]}],"versions":["v4.1.0","v4.1.1","v4.1.10","v4.1.11","v4.1.12","v4.1.13","v4.1.2","v4.1.3","v4.1.4","v4.1.5","v4.1.6","v4.1.7","v4.1.8","v4.1.9","v4.2.0","v4.2.0-BETA1","v4.2.0-BETA2","v4.2.0-RC1","v4.2.1","v4.2.10","v4.2.11","v4.2.12","v4.2.2","v4.2.3","v4.2.4","v4.2.5","v4.2.6","v4.2.7","v4.2.8","v4.2.9","v4.3.0","v4.3.0-BETA1","v4.3.0-BETA2","v4.3.0-RC1","v4.3.1","v4.3.10","v4.3.11","v4.3.2","v4.3.3","v4.3.4","v4.3.5","v4.3.6","v4.3.7","v4.3.8","v4.3.9","v4.4.0","v4.4.0-BETA1","v4.4.0-BETA2","v4.4.0-RC1","v4.4.1","v4.4.10","v4.4.11","v4.4.12","v4.4.13","v4.4.14","v4.4.15","v4.4.16","v4.4.17","v4.4.18","v4.4.19","v4.4.2","v4.4.20","v4.4.21","v4.4.22","v4.4.23","v4.4.24","v4.4.25","v4.4.26","v4.4.27","v4.4.28","v4.4.29","v4.4.3","v4.4.30","v4.4.31","v4.4.32","v4.4.33","v4.4.34","v4.4.35","v4.4.36","v4.4.37","v4.4.38","v4.4.39","v4.4.4","v4.4.40","v4.4.41","v4.4.42","v4.4.43","v4.4.44","v4.4.45","v4.4.46","v4.4.47","v4.4.48","v4.4.49","v4.4.5","v4.4.50","v4.4.51","v4.4.6","v4.4.7","v4.4.8","v4.4.9","v5.0.0","v5.0.0-BETA1","v5.0.0-BETA2","v5.0.0-RC1","v5.0.1","v5.0.10","v5.0.11","v5.0.2","v5.0.3","v5.0.4","v5.0.5","v5.0.6","v5.0.7","v5.0.8","v5.0.9","v5.1.0","v5.1.0-BETA1","v5.1.0-RC1","v5.1.0-RC2","v5.1.1","v5.1.10","v5.1.11","v5.1.2","v5.1.3","v5.1.4","v5.1.5","v5.1.6","v5.1.7","v5.1.8","v5.1.9","v5.2.0","v5.2.0-BETA1","v5.2.0-BETA2","v5.2.0-BETA3","v5.2.0-RC1","v5.2.0-RC2","v5.2.1","v5.2.10","v5.2.11","v5.2.12","v5.2.13","v5.2.14","v5.2.2","v5.2.3","v5.2.4","v5.2.5","v5.2.6","v5.2.7","v5.2.8","v5.2.9","v5.3.0","v5.3.0-BETA1","v5.3.0-BETA2","v5.3.0-BETA3","v5.3.0-BETA4","v5.3.0-RC1","v5.3.1","v5.3.10","v5.3.11","v5.3.12","v5.3.13","v5.3.14","v5.3.15","v5.3.16","v5.3.2","v5.3.3","v5.3.4","v5.3.5","v5.3.6","v5.3.7","v5.3.8","v5.3.9","v5.4.0","v5.4.0-BETA1","v5.4.0-BETA2","v5.4.0-BETA3","v5.4.0-RC1","v5.4.1","v5.4.10","v5.4.11","v5.4.12","v5.4.13","v5.4.14","v5.4.15","v5.4.16","v5.4.17","v5.4.18","v5.4.19","v5.4.2","v5.4.20","v5.4.21","v5.4.22","v5.4.23","v5.4.24","v5.4.25","v5.4.26","v5.4.27","v5.4.28","v5.4.29","v5.4.3","v5.4.30","v5.4.31","v5.4.32","v5.4.33","v5.4.34","v5.4.35","v5.4.36","v5.4.37","v5.4.38","v5.4.39","v5.4.4","v5.4.40","v5.4.41","v5.4.42","v5.4.43","v5.4.44","v5.4.45","v5.4.46","v5.4.47","v5.4.48","v5.4.49","v5.4.5","v5.4.50","v5.4.51","v5.4.52","v5.4.53","v5.4.6","v5.4.7","v5.4.8","v5.4.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-r925-mgvr-h9cc/GHSA-r925-mgvr-h9cc.json"}}],"schema_version":"1.9.2","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N"}]}