Symfony - CVE-2026-118515
Date de publication :
Il s’agit d’une vulnérabilité dans le composant Serializer de Symfony.
Symfony est un framework PHP pour applications web et en ligne de commande. Il est aussi un ensemble de composants réutilisables.
Le normaliseur DataUriNormalizer ne traite que les types exacts SplFileInfo, SplFileObject et File. Une propriété typée avec une sous-classe, comme UploadedFile, est donc confiée à ObjectNormalizer. Celui-ci instancie l’objet via son constructeur avec les données de la requête. Ces données incluent le chemin du fichier, le nom d’origine et l’indicateur test. Avec test: true, la méthode isValid() ignore le contrôle is_uploaded_file() et la méthode move() bascule sur rename(). La contrainte Assert File ne protège pas, car elle valide le fichier réel choisi par l’attaquant. Une requête non authentifiée en JSON ou en formulaire suffit, sans aucun fichier envoyé. C’est le cas avec #[MapRequestPayload] sur un DTO ayant une propriété UploadedFile. Tout code qui désérialise des données non fiables vers un type contenant une telle propriété est concerné. Un sérialiseur sans DataUriNormalizer placé avant le normaliseur d’objets n’est pas protégé par le correctif.
Elle permet à un attaquant non authentifié de faire traiter n’importe quel fichier du serveur comme un fichier téléversé. Il peut ainsi lire tout fichier accessible à PHP, par exemple un fichier .env.local lorsque les uploads sont stockés puis servis. Il peut aussi déplacer ces fichiers et déterminer l’existence d’un chemin.
Informations
La faille est activement exploitée : Non
Un correctif existe : Oui
Une mesure de contournement existe : Non
• Atteinte à la confidentialité des données
• Atteinte à l'intégrité des données
Exploitation
CWE-73 : External Control of File Name or Path
Détails sur l'exploitation
• Vecteur d'attaque : Réseau
• Complexité de l'attaque : Élevée
• Privilèges nécessaires pour réaliser l'attaque : Aucun
• Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
• L'exploitation de la faille permet d'obtenir des droits privilégiés : Non
Preuve de concept
Actuellement, aucune preuve de concept n'est disponible en sources ouvertes.
Systèmes ou composants affectés
Symfony branches non maintenues antérieures à 5.4 incluses.
- Symfony versions 6.0.0 jusqu’à 6.4.49.
- Symfony versions 7.0.0 jusqu’à 7.4.22.
- Symfony versions 8.0.0 jusqu’à 8.1.10.
Solutions ou recommandations
• Symfony branche 6.x : versions 6.4.50 et supérieures.
• Symfony branche 7.x : versions 7.4.23 et supérieures.
• Symfony branche 8.x : versions 8.1.11 et supérieures.