UBUNTU-CVE-2026-123824: Low severity ubuntu/symfony vulnerability
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 LIBXMLNONET 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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
symfony/configto a version that resolves this vulnerability.Fixed in 5.4.56 - Upgrade
Upgrade
symfony/configto a version that resolves this vulnerability.Fixed in 6.4.50 - Upgrade
Upgrade
symfony/configto a version that resolves this vulnerability.Fixed in 7.4.23 - Upgrade
Upgrade
symfony/configto a version that resolves this vulnerability.Fixed in 8.1.11
Event History
Frequently Asked Questions
Which applications are exposed to this issue?
Applications are exposed when an attacker can supply XML that is passed to Symfony Config's XmlUtils::parse(). The affected version ranges are Symfony versions before 5.4.56, 6.4.50, 7.4.23, and 8.1.11.
What does an attacker need to exploit the issue?
The attacker needs the ability to provide a crafted XML document to XmlUtils::parse(). Exploitation uses a DOCTYPE declaring an external entity, including a file:// entity; no user interaction is required.
Can this disclose local file contents?
A file:// entity is read during XML parsing, but its contents are not normally returned to the caller. An attacker can still determine whether local paths exist from distinct libxml errors, cause denial of service with large or slow files, and may exfiltrate content if the application has registered a network-capable stream wrapper such as s3://.
Why does blocking network access not fully prevent exploitation?
The parser uses LIBXML_NONET, which blocks HTTP access but does not block file:// entities. External entities can therefore be resolved from local disk before the document's DOCTYPE is rejected.