Composer - CVE-2026-40261

Date de publication :

Il s'agit d'une vulnérabilité dans le pilote VCS Perforce de Composer, au niveau de la méthode Perforce::syncCodeBase().

Composer est le gestionnaire de dépendances de référence pour PHP, utilisé pour installer, mettre à jour et résoudre les dépendances de projets PHP via Packagist et d'autres dépôts.

Cette méthode ajoute le paramètre $sourceReference à une commande shell sans échappement adéquat. Un attaquant peut fournir une référence source malveillante contenant des métacaractères shell (|, ;, $(), etc.) via les métadonnées d'un dépôt Composer compromis ou malveillant. Composer tente d'exécuter la commande construite même si Perforce n'est pas installé sur le système. L'exploitation se déclenche lors d'une opération composer install ou composer update avec --prefer-source, qui est le comportement par défaut pour les versions préfixées dev-.

Elle permet l'exécution de commandes arbitraires dans le contexte de l'utilisateur, avec une atteinte totale à la confidentialité, à l'intégrité et à la disponibilité, y compris dans les pipelines CI/CD.

Informations

La faille est activement exploitée : Non

Un correctif existe : Oui

Une mesure de contournement existe : Oui

Risques

Exécution de code arbitraire (à distance)

Exploitation

La vulnérabilité exploitée est du type
CWE-78 : Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

Détails sur l'exploitation
•   Vecteur d'attaque : Réseau
•   Complexité de l'attaque : Faible
•   Privilèges nécessaires pour réaliser l'attaque : Aucun
•   Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Oui
•   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

•   Composer versions 2.3.0 jusqu'à 2.9.5
•   Composer versions 2.0.0 jusqu'à 2.2.26 (branche LTS)

Contournement provisoire

•   Éviter l'installation de dépendances depuis les sources en utilisant --prefer-dist ou en définissant preferred-install: dist dans la configuration Composer, pour toutes les branches affectées.
•   N'utiliser que des dépôts Composer de confiance, pour toutes les branches affectées.

Solutions ou recommandations

•   Composer branche mainline : version 2.9.6 et supérieures
•   Composer branche LTS 2.2 : version 2.2.27 et supérieures