Skip to main content
← Vulnerabilities

Symfony: XXE (Local File Read) in Config XmlUtils::parse() via validateOnParse = true

2.3LowCNA
Exploited
No known exploitation
Fix
Fixed in 5.4.56, 6.4.50, 7.4.23, 8.1.11
Who is exposed
Not reported

Do first: Upgrade to a fixed version: 5.4.56, 6.4.50, 7.4.23, 8.1.11.

Published
Last modified
15/100 · provisional
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: no
  • Technical impact: partial

Summary

Symfony's Config component, through its `XmlUtils::parse()` method, lets a remote attacker with low-privilege login determine whether local files exist and cause a denial of service through XML external entity injection, in applications that pass untrusted XML to that method. In some configurations, the attacker can also send local file contents to an external server.

Written by anthropic/claude-haiku-5.5 from the sources below. Verify against them.

Read the original description

The Symfony Config component XmlUtils::parse() enables DTD validation before rejecting documents that carry a doctype, allowing XML external entity (XXE) injection in Symfony versions prior to 5.4.56, 6.x prior to 6.4.50, 7.x prior to 7.4.23, and 8.x prior to 8.1.11. A remote attacker who can supply XML to this method can determine whether local files exist, cause a denial of service, and, in some configurations, exfiltrate local file content via a crafted XML document whose doctype declares an external file:// entity. XmlUtils::parse() sets $dom->validateOnParse = true before calling loadXML() and only rejects documents carrying a doctype afterwards. Enabling DTD validation makes libxml resolve external entities during loadXML(), and LIBXML_NONET blocks http:// but not file://, so a file:// entity is read from disk before the doctype rejection runs. The content of the file is not returned to the caller, but the distinct libxml error for a missing path reveals whether a file exists, and an entity pointing at a large or slow file causes a denial of service. If the application registers a network-capable stream wrapper such as s3://, a parameter entity can also send the content of a local file to an external server. This is the same issue as CVE-2026-45071, which was fixed in the DomCrawler component but not in Config.

Applications are affected if they pass untrusted XML to XmlUtils::parse() directly. The Symfony components that call it process developer-provided or operator-configured sources, such as configuration files and the XLIFF documents fetched by the translation providers.

cve.now Index

15Pcve.now Index 15 of 100 · methodology v3 · provisional
  • Exploitation0/40No signal
  • Exposure3/25Reachable over the network · Unknown: No advisory context yet
  • Reach10/20Affects Packagist packages
  • Severity2.3/10CVSS 2.3
  • No patch0/5No signal

What would change the score

  • Would score about 70 if added to CISA KEV
  • Would score about 65 if CISA's SSVC rates exploitation active
  • Would score about 34 if advisories confirm default setups are exposed

What to do

  • Upgrade to a fixed version: 5.4.56, 6.4.50, 7.4.23, 8.1.11.

Timeline

  1. CVE published
  2. First seen by cve.now
  3. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: partial

  4. Record last updated

Affected versions

  • symfony/configPackagist

    fixed in 5.4.56; From 6.0.0 · fixed in 6.4.50; From 7.0.0 · fixed in 7.4.23; From 8.0.0 · fixed in 8.1.11

Evidence 2

  1. Advisory
  2. Patch

Corrections

None so far.

Something wrong on this page? Report an error. Every fix is listed here.

Questions about CVE-2026-123824

Is CVE-2026-123824 being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data

Which versions are affected by CVE-2026-123824?

symfony/config (Packagist): before 5.4.56; from 6.0.0 before 6.4.50; from 7.0.0 before 7.4.23; from 8.0.0 before 8.1.11.Source: cve.now feed data

How do I fix CVE-2026-123824?

Upgrade to a fixed version: 5.4.56, 6.4.50, 7.4.23, 8.1.11.Source: cve.now feed data