Summary
CVE-2026-45071 is an XML External Entity (XXE) injection vulnerability in the Symfony symfony/dom-crawler component, affecting all supported Symfony branches prior to versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12. The flaw enables unauthenticated, network-accessible attackers to supply malicious XML that causes the server to read and disclose arbitrary local files. It carries a CVSS 4.0 score of 8.7 (High) with no authentication and no user interaction required.
Technical details
- Root cause: The
Crawler::addXmlContent()method setsDOMDocument::$validateOnParse = trueimmediately before callingloadXML(). This assignment re-enables libxml’s DTD subset processing and external entity resolution, overriding the safe parsing state that Symfony otherwise maintains. - Why
LIBXML_NONETis insufficient: AlthoughLIBXML_NONETis passed toloadXML()to block network-based entity fetches, it does not preventfile://URI entities from being resolved. An attacker can therefore supply a document with aSYSTEM "file:///etc/passwd"entity declaration (or any path readable by the web process) and receive its content in the server’s response. - Trigger condition: Exploitation requires an application to call
Crawler::addXmlContent()with attacker-controlled XML in a web-reachable request handler. The method is not invoked automatically — it must be called explicitly in a controller or service that processes user-supplied XML (e.g., XML API endpoints, feed parsers, or file upload handlers). Thesymfony/browser-kitcomponent (HttpBrowser) is also affected, as it invokes this method internally when parsing XML responses. - Attack vector: Network, no authentication, no user interaction (CVSS 4.0:
AV:N/AC:L/AT:N/PR:N/UI:N). - Impact: Unauthorized disclosure of arbitrary local files readable by the application process, including configuration files, environment files, and application secrets. Confidentiality impact is rated High; integrity and availability are unaffected.
Affected software
symfony/dom-crawlerandsymfony/browser-kitall versions < 5.4.52symfony/dom-crawlerandsymfony/browser-kitversions ≥ 6.0.0 and < 6.4.40symfony/dom-crawlerandsymfony/browser-kitversions ≥ 7.0.0 and < 7.4.12symfony/dom-crawlerandsymfony/browser-kitversions ≥ 8.0.0 and < 8.0.12
Severity
CVSS 4.0 Base Score: 8.7 (High)
Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate action — upgrade to a patched release:
- Symfony 5.x: upgrade to 5.4.52 or later
- Symfony 6.x: upgrade to 6.4.40 or later
- Symfony 7.x: upgrade to 7.4.12 or later
- Symfony 8.x: upgrade to 8.0.12 or later
- The fix removes the
$dom->validateOnParse = trueassignment fromCrawler::addXmlContent(), ensuring external entity resolution remains disabled during XML parsing. - If immediate patching is not possible: Audit all application code for direct or indirect calls to
Crawler::addXmlContent()— and any use ofHttpBrowserto fetch XML responses — where the XML content originates from untrusted user input. As a temporary measure, implement validation that rejects XML payloads containing DTD declarations (<!DOCTYPE) at the application layer or WAF level.
IONIX Status
The IONIX research team is tracking ongoing exploitation attempts and recommends immediate patching. Potentially affected assets are outlined in this post.

