Image de couverture : CVE-2026-55878 : faille critique Path Traversal dans Symfony UX Toolkit — mettez à jour immédiatement
Sécurité

CVE-2026-55878 : faille critique Path Traversal dans Symfony UX Toolkit — mettez à jour immédiatement

21 June 2026
1 min de lecture
22 vues
Sébastien Muler

Une vulnérabilité critique touche Symfony UX Toolkit

Le 19 juin 2026, Fabien Potencier a publié sur le blog officiel de Symfony un avis de sécurité concernant CVE-2026-55878, une vulnérabilité de type Path Traversal affectant symfony/ux-toolkit. Cette faille permet l'écriture et la lecture arbitraires de fichiers via une recette (« recipe ») malveillante, ouvrant potentiellement la voie à une exécution de code à distance sur la machine du développeur ou sur un runner CI/CD.

Chez MulerTech, nous suivons de près ce type d'alertes car nos projets PHP/Symfony s'appuient régulièrement sur l'écosystème UX. Voici ce qu'il faut savoir, et surtout, ce qu'il faut faire dès maintenant.

Versions affectées

La vulnérabilité concerne les versions suivantes de Symfony UX Toolkit :

  • >=2.32.0 <2.36.1
  • >=3.0.0 <3.2.0

Le correctif a été publié dans les versions 2.36.1 et 3.2.0. Si votre projet ou vos outils de tooling interne dépendent de symfony/ux-toolkit dans ces plages de versions, une mise à jour immédiate est fortement recommandée.

Comprendre la faille technique

La commande console ux:install installe les fichiers d'un kit de recette en copiant des chemins listés dans une carte copy-files. Le problème vient de la validation de ces chemins.

La seule protection en place reposait sur Path::isRelative(). Or, cette fonction retourne true pour des chemins du type ../../../etc, car techniquement il s'agit bien d'un chemin relatif — simplement, il remonte volontairement en dehors du répertoire prévu. Ensuite, Path::join() résout les segments .. sans la moindre vérification supplémentaire, ce qui permet au chemin final de s'échapper complètement du répertoire cible.

Concrètement, une recette forgée ou compromise peut donc écrire un contenu contrôlé par l'attaquant à n'importe quel emplacement accessible sur la machine du développeur ou sur un environnement d'intégration continue.

Pourquoi c'est particulièrement dangereux

Plusieurs facteurs aggravent l'impact de cette faille :

  • Création automatique des répertoires parents : l'opération de copie crée les dossiers manquants sans avertissement.
  • Écrasement silencieux de fichiers existants : avec l'option --force, ou simplement dans un environnement non-interactif (typiquement un pipeline CI), des fichiers peuvent être remplacés sans confirmation.
  • Cibles sensibles : un attaquant maîtrisant un kit malveillant peut ainsi écraser des contrôleurs applicatifs, des hooks Git, ou encore le fichier .env, ce qui peut conduire à une exécution de code arbitraire sur la machine ciblée.

Le billet original mentionne également que le côté « source » de copy-files est lui aussi concerné, ce qui suggère un vecteur de lecture arbitraire de fichiers en plus de l'écriture — un scénario classique d'exfiltration de secrets (clés API, identifiants, fichiers de configuration) lors de l'installation d'une recette piégée.

Un risque de type supply chain attack

Cette CVE illustre un cas d'école de supply chain attack : le mécanisme de recettes Symfony, conçu pour automatiser l'installation et la configuration de packages, devient ici un vecteur d'attaque si la source de la recette n'est pas fiable ou a été compromise.

Dans un contexte où de plus en plus d'équipes utilisent des outils d'installation automatisée — que ce soit via des recettes officielles, des kits communautaires, ou des dépôts internes — il est essentiel de garder à l'esprit que ces mécanismes exécutent des opérations sur le système de fichiers avec les privilèges de l'utilisateur qui lance la commande. Un kit malveillant n'a donc pas besoin d'exploiter une faille système complexe : il suffit que l'outil d'installation lui fasse une confiance excessive sur les chemins qu'il manipule.

Comment se protéger dès maintenant

Si votre projet utilise symfony/ux-toolkit, voici les actions à mener en priorité :

  1. Vérifier la version installée :
    composer show symfony/ux-toolkit
    
  2. Mettre à jour vers une version corrigée :
    composer require symfony/ux-toolkit:^2.36.1
    # ou
    composer require symfony/ux-toolkit:^3.2.0
    
  3. Auditer les recettes installées récemment via ux:install, en particulier celles provenant de sources tierces ou non officielles.
  4. Restreindre l'exécution de ux:install --force dans les environnements CI/CD non interactifs tant que la mise à jour n'est pas déployée partout.
  5. Vérifier l'intégrité des fichiers sensibles (.env, hooks Git, contrôleurs) si des recettes douteuses ont été exécutées avant la mise à jour.

Conclusion

CVE-2026-55878 rappelle une fois de plus que les outils de tooling et d'automatisation, même officiels, méritent une vigilance particulière dès lors qu'ils manipulent le système de fichiers à partir de sources externes. La combinaison d'une validation insuffisante des chemins (Path::isRelative()) et d'une résolution permissive (Path::join()) suffit à transformer une fonctionnalité pratique en porte d'entrée pour une compromission complète.

Chez MulerTech, nous recommandons à toutes les équipes utilisant Symfony UX Toolkit de planifier la mise à jour vers la version 2.36.1 ou 3.2.0 sans délai, et d'intégrer une revue systématique des dépendances de sécurité dans leur cycle de développement.

Source originale : Symfony Blog — CVE-2026-55878, publié par Fabien Potencier le 19 juin 2026.

Partager cet article