ÉlevéeCVE-2026-109413
Symfony : Une récursion non bornée dans le Lexer Inline YAML permet à un seul document de faire planter le processus
Conséquences sérieuses, souvent sous quelques conditions : à corriger rapidement.
- Sévérité
- Élevée8.7 / 10
- Publiée le
- 2026(e)ko urriaren 27(a)
- Mise à jour
- 2026(e)ko urriaren 27(a)
L'avis
Traduction automatique de l'avis officiel. En cas de doute, l'avis d'origine, plus bas, fait foi.
Description
Yaml\Parser::lexInlineStructure() récursait à travers lexInlineMapping() et lexInlineSequence() pour chaque { et [ d'une collection inline, sans entrer dans le niveau d'imbrication que le reste du parser limite avec maxNestingLevel. Un document composé de collections inline profondément imbriquées, tel que [[[[...]]]], a épuisé la pile lors de son analyse : selon la version PHP et ses paramètres de pile, le processus a crashé ou la demande s'est terminée avec une erreur fatale.
Tout code analysant un YAML non fiable est affecté. Cela inclut #[MapRequestPayload] lorsque le composant Yaml est installé et que l'endpoint ne restreint pas acceptFormat : une seule demande non authentifiée avec un type de contenu YAML suffit.
Resolution
Le lexer inline entre et quitte maintenant le même niveau d'imbrication que le reste du parser, de sorte que les collections inline imbriquées sont bornées par maxNestingLevel, et le parser lève une ParseException au-delà de ce niveau.
Les correctifs pour ce problème sont disponibles here (leiho berria) pour la branche 5.4 (et portés vers 6.4, 7.4, 8.1 et 8.2).
Credits
Nous aimerions remercier Nicolas Grekas pour avoir signalé le problème et fourni le correctif.
References
- Correctif : #65688 (leiho berria)
Composants touchés
| Composant | Versions touchées | Corrigé en |
|---|---|---|
| symfony/symfonyPHP (Composer) | >= 2.0.0, < 5.4.54 | 5.4.54 |
| symfony/symfonyPHP (Composer) | >= 6.0.0, < 6.4.45 | 6.4.45 |
| symfony/symfonyPHP (Composer) | >= 7.0.0, < 7.4.18 | 7.4.18 |
| symfony/symfonyPHP (Composer) | >= 8.0.0, < 8.1.6 | 8.1.6 |
| symfony/yamlPHP (Composer) | >= 2.0.0, < 5.4.54 | 5.4.54 |
| symfony/yamlPHP (Composer) | >= 6.0.0, < 6.4.45 | 6.4.45 |
| symfony/yamlPHP (Composer) | >= 7.0.0, < 7.4.18 | 7.4.18 |
| symfony/yamlPHP (Composer) | >= 8.0.0, < 8.1.6 | 8.1.6 |
Vous utilisez une version touchée ? Passez à la version corrigée, puis redéployez.