Skip to main content

Symfony YAML EUVDEUVD-2026-102109

| CVE-2026-109413 HIGH
Uncontrolled Recursion (CWE-674)
2026-10-15 Checkmarx
8.7
CVSS 4.0 · Vendor: Checkmarx
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify YAML-parsing endpoint
  2. Delivery
    Craft deeply nested inline collection payload
  3. Exploit
    Submit unauthenticated request with YAML content type
  4. Execution
    Trigger unbounded recursion in inline lexer
  5. Impact
    Exhaust PHP stack and crash process

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
Exploitation Conditions

Exploitation requires the application to parse untrusted YAML through the symfony/yaml component at an affected version (prior to 5.4.54, 6.4.45, 7.4.18, or 8.1.6). The highest-exposure path is a controller using the #[MapRequestPayload] attribute when the Yaml component is installed AND the endpoint does not restrict acceptFormat, allowing a single unauthenticated request with a YAML content type to reach the parser. The required payload is a deeply nested inline collection (e.g. [[[[...]]]] or {{{...) exceeding available stack depth. LIMITING FACTORS: applications that never pass attacker-controlled input to Yaml::parse()/Parser::parse() are not exploitable; endpoints that restrict acceptFormat (e.g. to JSON) block the MapRequestPayload vector; and the concrete outcome (process crash vs. fatal error) depends on the PHP version and its stack settings.

Impact

This is a genuine but bounded risk. All signals point to a denial-of-service-only flaw: the CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:N) describes a network-reachable, low-complexity, unauthenticated trigger, but impact is confined to availability (VC:N/VI:N/VA:H) with no confidentiality or integrity loss, consistent with the CWE-674 unbounded-recursion/stack-exhaustion mechanism. The assigned 8.7 (HIGH) is driven almost entirely by the ease of reaching the code path rather than by impact severity. No EPSS score was provided and the vulnerability is NOT listed in CISA KEV; no public exploit identified at time of analysis. The practical priority is therefore moderate-to-high specifically for deployments that parse attacker-controlled YAML (notably #[MapRequestPayload] endpoints that accept a YAML content type), and low for applications that only parse trusted/internal YAML. Note one nuance to verify: the description frames the most dangerous entry point (#[MapRequestPayload]) as conditional on the Yaml component being installed and the endpoint not restricting acceptFormat, so the AV:N/PR:N/UI:N vector is accurate for that configuration but overstates exposure for apps that never expose YAML parsing to untrusted input.

Exploit ScenarioDerived

An attacker sends a single unauthenticated HTTP request with a YAML content type to a Symfony application that parses the body (for example a controller using #[MapRequestPayload] with the Yaml component installed and no acceptFormat restriction). The body is a deeply nested inline collection such as [[[[...]]]], which drives unbounded recursion in Yaml\Parser::lexInlineStructure() and exhausts the PHP stack, crashing the worker or returning a fatal error. No public exploit code is identified, but the payload is trivial to construct.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 15, 2026

Unbounded recursion in the Symfony YAML inline lexer lets a single document made of deeply nested inline collections (for example [[[[...]]]] or {{{...'}) exhaust the PHP call stack, crashing the worker process or ending the request with a fatal error in symfony/yaml prior to 5.4.54, 6.4.45, 7.4.18, and 8.1.6. The highest-exposure path is fully unauthenticated: a controller using #[MapRequestPayload] with the Yaml component installed and no acceptFormat restriction will accept a YAML content-type request that reaches Parser::lexInlineStructure() directly, and any application that parses untrusted YAML is affected. Impact is availability-only per the assessed vector (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H; vendor CVSS 4.0 base 8.7), exploitation is bounded by whether attacker-controlled input ever reaches the parser and by PHP version and stack settings. Vendor-released fixes exist for all maintained branches and no public exploit identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade symfony/yaml to 5.4.54, 6.4.45, 7.4.18, or 8.1.6 (or later on the corresponding branch); the fix is the upstream pull request https://github.com/symfony/symfony/pull/65688, referenced from advisory GHSA-2v3c-qxhr-7vpv and the Symfony blog post at https://symfony.com/blog/cve-2026-109413-unbounded-recursion-in-the-yaml-inline-lexer-lets-a-single-document-crash-the-process. Where immediate upgrading is not possible, the most effective compensating control is to stop the MapRequestPayload vector at the application edge: explicitly restrict acceptFormat (for example to json) on endpoints whose payloads use #[MapRequestPayload], which prevents a YAML content-type body from ever reaching the parser - the trade-off is that legitimate YAML clients are rejected, so this should be paired with a client-side content-type change. Second, audit code paths that call Yaml::parse()/Parser::parse() with request-derived data and either remove untrusted YAML parsing or front it with strict input validation and a length/depth cap; the trade-off is added parsing latency and possible rejection of legitimately complex documents. Third, a reverse-proxy or WAF rule that rejects request bodies containing a long run of unescaped '[' or '{' (well below 128 levels) blocks the known payload shape generically, at the cost of possible false positives on unusually deep legitimate inline YAML. Note that raising PHP stack limits (for example zend.max_allowed_stack_size) or memory limits does not fix the defect - it only moves the crash threshold and applies environment-wide - so it should be treated as a stopgap alongside, not instead of, the patch. If PHP-FPM workers are used, enable process supervision/auto-restart and health checks so a crashed worker is recovered quickly, and monitor for repeated worker exits correlated with YAML request bodies.

Affected VersionsENISA

symfony v7.0.0-BETA1 <v7.4.18
symfony 0 <v5.4.54
symfony v8.0.0-BETA1 <v8.1.6
symfony v6.0.0-BETA1 <v6.4.45

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is CWE-674 (Uncontrolled Recursion) inside the Symfony Yaml component's hand-written inline lexer. Parser::lexInlineStructure() recursed through lexInlineMapping() and lexInlineSequence() for every '{' or '[' encountered in an inline collection, but unlike the rest of the parser it never called enterNestingLevel(), so the maxNestingLevel bound (DEFAULT_MAX_NESTING_LEVEL of 128) that protects block-style YAML was never applied while lexing inline structures. Because each nested '{' or '[' consumed a PHP stack frame, a crafted document such as str_repeat('[', N) drove the call stack past its limit before the nesting guard could ever fire; the observable outcome depends on the PHP version and its stack settings, producing either a process crash or a fatal error. The upstream fix (PR 65688, src/Symfony/Component/Yaml/Parser.php) wraps the renamed doLexInlineStructure() in getState()->enterNestingLevel(...)/leaveNestingLevel() inside a try/finally, so inline sequences and mappings are now counted against the same nesting budget as the rest of the document; regression tests assert that Parser::DEFAULT_MAX_NESTING_LEVEL + 1 unterminated '[' or '{' characters raise ParseException('Maximum nesting depth of 128 exceeded') while exactly 128 levels still parse. CPE cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:* confirms the Symfony (SensioLabs) package as the affected product line, and the issue is reported by Checkmarx.

Know when Symfony gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Checkmarx) PRIMARY 8.7 HIGH
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
vuln.today AI 7.5 HIGH

Network-reachable unauthenticated parsing of untrusted YAML with a trivial payload gives AV:N/AC:L/PR:N/UI:N; stack exhaustion is availability-only, so C:N/I:N/A:H and S:U.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Checkmarx).

CVSS VectorVendor: Checkmarx

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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 prior to v5.4.54, v6.0.0-BETA1 prior to v6.4.45, v7.0.0-BETA1 prior to v7.4.18, and v8.0.0-BETA1 prior to v8.1.6.

Technical POC Analysis

CWE-674 (Uncontrolled Recursion).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Symfony's YAML parsing component, which ships inside many PHP applications built on the framework, can be driven into a fatal error by a single malformed request, taking down the PHP worker that handles it. The most exposed path requires no credentials and is reachable through ordinary request-payload controllers in internet-facing services, so any application that processes untrusted YAML can be repeatedly interrupted for availability at negligible attacker cost. Leadership should treat this as a service-reliability risk touching customer-facing availability, remediated by a routine library upgrade already available from the vendor.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 58% exploitable
Prevalence
High
Symfony is a widely deployed enterprise PHP framework; yaml component common
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Medium
Technical Impact
Partial

Priority Score

45
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2015-4050 MEDIUM POC
4.3 Jun 02

FragmentListener in the HttpKernel component in Symfony 2.3.19 through 2.3.28, 2.4.9 through 2.4.10, 2.5.4 through 2.5.1

CVE-2019-10910 CRITICAL POC
9.8 May 16

In Symfony before 2.7.51, 2.8.x before 2.8.50, 3.x before 3.4.26, 4.x before 4.1.12, and 4.2.x before 4.2.7, when servic

CVE-2018-13818 CRITICAL POC
9.8 Jul 10

Twig before 2.4.4 allows Server-Side Template Injection (SSTI) via the search search_key parameter. Rated critical sever

CVE-2026-100872 HIGH POC
8.7 Sep 27

Insufficient verification of payment-claim state in the Sylius e-commerce platform (versions before 2.1.16 and 2.2.9) le

CVE-2026-100869 HIGH POC
8.2 Sep 27

Incorrect authorization in the Sylius Shop API lets anyone holding an order token submit arbitrary payment actions - mos

CVE-2025-64500 HIGH POC
7.3 Nov 12

Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Rated high severity (C

CVE-2026-24739 MEDIUM POC
6.3 Jan 28

Symfony versions up to 5.4.51 contains a vulnerability that allows attackers to operations being performed on an uninten

CVE-2018-12040 MEDIUM POC
6.1 Jun 13

Reflected Cross-site scripting (XSS) vulnerability in the web profiler in SensioLabs Symfony 3.3.6 allows remote attacke

CVE-2016-2403 CRITICAL
9.8 Feb 07

Symfony before 2.8.6 and 3.x before 3.0.6 allows remote attackers to bypass authentication by logging in with an empty p

CVE-2024-51736 CRITICAL
9.8 Nov 06

Symphony process is a module for the Symphony PHP framework which executes commands in sub-processes. Rated critical sev

CVE-2019-18889 CRITICAL
9.8 Nov 21

An issue was discovered in Symfony 3.4.0 through 3.4.34, 4.2.0 through 4.2.11, and 4.3.0 through 4.3.7. Rated critical s

CVE-2019-11325 CRITICAL
9.8 Nov 21

An issue was discovered in Symfony before 4.2.12 and 4.3.x before 4.3.8. Rated critical severity (CVSS 9.8), this vulner

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy