VDB
Sign up
LOW

GHSA-9frc-8383-795m

Symfony's YAML Parser has a ReDoS via Catastrophic Backtracking in Parser::cleanup() Regex

Quick fix

GHSA-9frc-8383-795m — symfony/yaml: upgrade to the fixed version with the command below.

composer require symfony/yaml:^5.4.52

Details

### Description

`Symfony\Component\Yaml\Parser::cleanup()` strips the optional `%YAML` directive header, leading comments, and document start/end markers before parsing. The original regexes contained overlapping quantifiers, most notably `'#^%YAML[: ][\d.]+.*\n#u'`, whose `[\d.]+` and `.*` overlap on the dot, that exhibit catastrophic backtracking on crafted input. A single oversized `%YAML` directive header (or comment / document-marker line) makes the parser hang for an arbitrarily long time, denying service.

### Resolution

The four regexes in `Parser::cleanup()` (YAML directive header, leading comments, document-start marker, document-end marker) have been rewritten with possessive quantifiers and unambiguous character classes so backtracking cannot occur.

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

### Credits

Symfony would like to thank Pietro Tirenna (Shielder) for reporting the issue and Nicolas Grekas for fixing it.

Are you affected?

Enter the version of the package you're using.

Affected packages

Packagist/symfony/yaml
Introduced in: 0Fixed in: 5.4.52
Fixcomposer require symfony/yaml:^5.4.52
Packagist/symfony/symfony
Introduced in: 0Fixed in: 5.4.52
Fixcomposer require symfony/symfony:^5.4.52
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
Packagist/symfony/yaml
Introduced in: 6.0.0Fixed in: 6.4.40
Fixcomposer require symfony/yaml:^6.4.40
Packagist/symfony/yaml
Introduced in: 7.0.0Fixed in: 7.4.12
Fixcomposer require symfony/yaml:^7.4.12
Packagist/symfony/yaml
Introduced in: 8.0.0Fixed in: 8.0.12
Fixcomposer require symfony/yaml:^8.0.12

References