CVE-2026-109413 json
Symfony: Unbounded Recursion in the YAML Inline Lexer Lets a Single Document Crash the Process
published 25d ago modified 13d ago also GHSA-2v3c-qxhr-7vpv , EUVD-2026-102109
- cvss
- 8.7
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 34%
- public exploits
- 0
- none known
Summary
In Symfony YAML prior to versions 5.4.54, 6.4.45, 7.4.18, and 8.1.6, Yaml\Parser::lexInlineStructure() recursed through lexInlineMapping() and lexInlineSequence() for every { and [ of an inline collection, without entering the nesting level that the rest of the parser bounds with maxNestingLevel. A document made of deeply nested inline collections, such as [[[[...]]]], exhausted the stack while it was being lexed: depending on the PHP version and its stack settings, the process crashed or the request ended with a fatal error.
Any code parsing untrusted YAML is affected. That includes #[MapRequestPayload] when the Yaml component is installed and the endpoint does not restrict acceptFormat: a single unauthenticated request with a YAML content type is enough.
This issue affects symfony/yaml through v5.4.53, v6.0.0-BETA1 through v6.4.44, v7.0.0-BETA1 through v7.4.17, and v8.0.0-BETA1 through v8.1.5.
Patch / fix
- packagist symfony/symfony 5.4.54, 6.4.45, 7.4.18, 8.1.6
- packagist symfony/yaml 5.4.54, 6.4.45, 7.4.18, 8.1.6
- symfony Debian 13 6.4.49+dfsg-0+deb13u1
- symfony Debian 14 7.4.18+dfsg-1
debian advisories DEBIAN-CVE-2026-109413
- github.com/symfony/symfony@116287c commit
- github.com/symfony/symfony@2a8bf9c commit
- github.com/symfony/symfony@8fb436f commit
- github.com/symfony/symfony@ab61e6c commit
- github.com/symfony/symfony#65688 pull request
- github.com/symfony/symfony/releases/tag/v5.4.54 release
- github.com/symfony/symfony/releases/tag/v6.4.45 release
- github.com/symfony/symfony/releases/tag/v7.4.18 release
- github.com/symfony/symfony/releases/tag/v8.1.6 release
Is CVE-2026-109413 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerVendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-109413 updated cvss 7.5
symfony/yaml: symfony/yaml: Denial of Service via deeply nested inline collections
-
Red Hat All currently supported Red Hat productsnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 25d ago
Exploit prediction
0.40% chance of exploitation in the next 30 days, higher than 34% of all scored CVEs (FIRST EPSS, 2026-11-09).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 8.7 | 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 |
| CNA | 4.0 | 8.7 | 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/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:X |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| packagist | symfony/symfony | >=2.0.0, <5.4.54 >=6.0.0, <6.4.45 >=7.0.0, <7.4.18 >=8.0.0, <8.1.6 |
5.4.54 6.4.45 7.4.18 8.1.6 |
| packagist | symfony/yaml | >=2.0.0, <5.4.54 >=6.0.0, <6.4.45 >=7.0.0, <7.4.18 >=8.0.0, <8.1.6 |
5.4.54 6.4.45 7.4.18 8.1.6 |
Affected products
- sensiolabs symfony
Classification
- Weakness
-
- CWE-674 Uncontrolled Recursion
References
-
github.com
/symfony/symfony/pull/65688
patch, web
-
github.com
/symfony/symfony/commit/116287c3b5bc057e7a0420d2e52d384e14ea9417
web
-
github.com
/symfony/symfony/commit/2a8bf9c58d862b0c76a35ce288d1ba6a27223aad
web
-
github.com
/symfony/symfony/commit/8fb436fed9658a79d220e9f2b1ba8a2095559018
web
-
github.com
/symfony/symfony/commit/ab61e6cfd35042f16840a00f485eab2481dd4c2a
web
-
symfony.com
/blog/cve-2026-109413-unbounded-recursion-in-the-yaml-inline-lexer-lets-a-single-document-crash-the-process
vendor-advisory, web
-
github.com
/symfony/symfony/security/advisories/GHSA-2v3c-qxhr-7vpv
third-party-advisory, web
-
nvd.nist.gov
/vuln/detail/CVE-2026-109413
advisory
-
github.com
/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2026-109413.yaml
web
-
github.com
/FriendsOfPHP/security-advisories/blob/master/symfony/yaml/CVE-2026-109413.yaml
web
-
github.com
/symfony/symfony
package
-
github.com
/symfony/symfony/releases/tag/v5.4.54
web
-
github.com
/symfony/symfony/releases/tag/v6.4.45
web
-
github.com
/symfony/symfony/releases/tag/v7.4.18
web
-
github.com
/symfony/symfony/releases/tag/v8.1.6
web
-
symfony.com
/cve-2026-109413
web
Sources
- CVE List CVE-2026-109413
- GitHub Advisory GHSA-2v3c-qxhr-7vpv
- NVD CVE-2026-109413
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.