VDB
Sign up
LOW

GHSA-x6g4-fwcc-jj8w

Symfony has XXE (Local File Disclosure) in DomCrawler::addXmlContent() via validateOnParse = true

Quick fix

GHSA-x6g4-fwcc-jj8w — symfony/dom-crawler: upgrade to the fixed version with the command below.

composer require symfony/dom-crawler:^5.4.52

Details

### Description

`symfony/dom-crawler` provides the `Crawler` class for navigating HTML/XML documents with CSS/XPath selectors; `symfony/browser-kit`'s `HttpBrowser` uses it to parse fetched pages.

`Crawler::addXmlContent()` sets `DOMDocument::$validateOnParse = true` before calling `loadXML()`. Setting `validateOnParse` re-enables libxml's DTD subset processing, including external entity resolution, even though `LIBXML_NONET` is passed. `LIBXML_NONET` blocks **network** fetches but not `file://` entities. An attacker-supplied XML document with a `SYSTEM "file:///etc/passwd"` entity is therefore expanded.

### Resolution

The `Crawler::addXmlContent` method does not set the `validateOnParse` flag anymore.

The patch for this issue is available [here](https://github.com/symfony/symfony/commit/eea5fd7488cbdc241da4ce242344b7d9a3ecdf3d) for branch 5.4.

### Credits

Symfony would like to thank Claude Mythos Preview (via Project Glasswing) for reporting the issue and providing the fix.

Are you affected?

Enter the version of the package you're using.

Affected packages

Packagist/symfony/dom-crawler
Introduced in: 0Fixed in: 5.4.52
Fixcomposer require symfony/dom-crawler:^5.4.52
Packagist/symfony/symfony
Introduced in: 0Fixed in: 5.4.52
Fixcomposer require symfony/symfony:^5.4.52
Packagist/symfony/dom-crawler
Introduced in: 6.0.0Fixed in: 6.4.40
Fixcomposer require symfony/dom-crawler:^6.4.40
Packagist/symfony/dom-crawler
Introduced in: 7.0.0Fixed in: 7.4.12
Fixcomposer require symfony/dom-crawler:^7.4.12
Packagist/symfony/dom-crawler
Introduced in: 8.0.0Fixed in: 8.0.12
Fixcomposer require symfony/dom-crawler:^8.0.12
Packagist/symfony/symfony
Introduced in: 6.0.0Fixed in: 6.4.40
Fixcomposer require symfony/symfony:^6.4.40
Packagist/symfony/symfony
Introduced in: 7.0.0Fixed in: 7.4.12
Fixcomposer require symfony/symfony:^7.4.12
Packagist/symfony/symfony
Introduced in: 8.0.0Fixed in: 8.0.12
Fixcomposer require symfony/symfony:^8.0.12

References