Symfony's XmlUtils::parse(), in the Config component, resolves external entities (references inside an XML document that point to other files) before it rejects the document. If your app passes untrusted XML to it, an attacker can learn whether files exist on your server, tie it up reading a large or slow file, and in some setups read files.
This is the same flaw CVE-2026-45071 fixed in the DomCrawler component. The copy in the Config component was missed at the time. See the Symfony advisory and the fix.
Who is affected
Only apps that call Symfony\Component\Config\Util\XmlUtils::parse() themselves with XML from users or another untrusted source.
Symfony's own callers are safe. The XML loaders of DependencyInjection, Routing, Validator and Serializer, XliffFileLoader and QtFileLoader read your own config and translation files. The Loco, Crowdin and Lokalise translation providers pass it documents from the service you configured.
For an exposed app, how much leaks depends on its stream wrappers. File contents can only leave the server if the app has registered a network-capable stream wrapper, such as s3://. Symfony rates the issue low because so few apps reach this code with untrusted input.
What to do
Update symfony/config (or symfony/symfony) to 5.4.56, 6.4.50, 7.4.23 or 8.1.11, depending on your branch. The fix removes a single line that turned on DTD validation, so parsing of valid config files doesn't change.
Reported by Prithiv Kumaravel (ProjectDiscovery) and Björn Meyer of Shopware AG.