Description
In Symfony Expression Language versions prior to 5.4.54, 6.4.48, 7.4.21, and 8.1.9, the parser of the ExpressionLanguage component built its node tree with no bound on its depth. An expression made of tens of thousands of nested unary operators, array literals, binary operators or property accesses crashed the PHP process, while the tree was being freed.


#[Assert\ExpressionSyntax] passes the validated value to ExpressionLanguage::lint(), so an application validating expressions written by its users could be crashed by a single request, and so could any code parsing untrusted expressions.

This issue affects symfony/expression-language through v5.4.53, v6.0.0-BETA1 through v6.4.47, v7.0.0-BETA1 through v7.4.20, and v8.0.0-BETA1 through v8.1.8.
Published: 2026-10-15
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service (process crash).
Action: Immediate Patch
AI Analysis

Impact

Symfony Expression Language builds parse tree without any limit on depth. An expression containing tens of thousands of nested unary operators, array literals, binary operators or property accesses will cause the PHP process to crash when the tree is freed. The vulnerability is a severe denial‑of‑service flaw (CWE‑674) that allows an attacker to bring the target application down with a single request that includes a malicious expression.

Affected Systems

The flaw affects the Symfony Expression Language component versions prior to 5.4.54, 6.4.48, 7.4.21, and 8.1.9. Specifically it is present in symfony/expression-language up to v5.4.53, v6.0.0‑BETA1 through v6.4.47, v7.0.0‑BETA1 through v7.4.20, and v8.0.0‑BETA1 through v8.1.8. Any Symfony application that validates or parses user‑supplied expressions via ExpressionLanguage::lint() or similar interfaces is exposed.

Risk and Exploitability

The CVSS score of 8.7 indicates a high‑severity vulnerability, and the EPSS score of less than 1% suggests a very low probability of exploitation at this time. The vulnerability is not listed in the CISA KEV catalog. An attacker can exploit this by supplying an excessively nested expression through any input that is passed to the expression parser, such as form validations or custom expression evaluation features. The attack requires only the ability to supply untrusted input; no elevated privileges are needed. Because the failure produces a process crash, the impact is a denial of service to the affected application.

Generated by OpenCVE AI on October 16, 2026 at 20:30 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Symfony Expression Language component to 5.4.54 or later, 6.4.48 or later, 7.4.21 or later, or 8.1.9 or later.
  • Apply any corresponding Symfony framework upgrade that includes the patched component version.
  • If an immediate upgrade is not possible, restrict or disable parsing of untrusted expressions, or sanitize inputs to prevent deeply nested expressions before passing them to ExpressionLanguage::lint() or similar methods.

Generated by OpenCVE AI on October 16, 2026 at 20:30 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 15 Oct 2026 19:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 15 Oct 2026 15:45:00 +0000

Type Values Removed Values Added
Description In Symfony Expression Language versions prior to 5.4.54, 6.4.48, 7.4.21, and 8.1.9, the parser of the ExpressionLanguage component built its node tree with no bound on its depth. An expression made of tens of thousands of nested unary operators, array literals, binary operators or property accesses crashed the PHP process, while the tree was being freed. #[Assert\ExpressionSyntax] passes the validated value to ExpressionLanguage::lint(), so an application validating expressions written by its users could be crashed by a single request, and so could any code parsing untrusted expressions. This issue affects symfony/expression-language through v5.4.53, v6.0.0-BETA1 through v6.4.47, v7.0.0-BETA1 through v7.4.20, and v8.0.0-BETA1 through v8.1.8.
Title Symfony: Unbounded Nesting in the Expression Parser Lets Untrusted Expressions Crash the Process
First Time appeared Sensiolabs
Sensiolabs symfony
Weaknesses CWE-674
CPEs cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*
Vendors & Products Sensiolabs
Sensiolabs symfony
References
Metrics cvssV4_0

{'score': 8.7, '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'}


Subscriptions

Sensiolabs Symfony
cve-icon MITRE

Status: PUBLISHED

Assigner: Checkmarx

Published:

Updated: 2026-10-15T18:05:32.422Z

Reserved: 2026-10-12T16:57:32.590Z

Link: CVE-2026-109449

cve-icon Vulnrichment

Updated: 2026-10-15T18:05:26.971Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-15T16:17:43.963

Modified: 2026-10-16T16:00:33.533

Link: CVE-2026-109449

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-24T04:30:07Z

Weaknesses