
Preuve de concept démontrant des vulnérabilités d'injection de commandes dans le pilote Perforce de Composer, avec deux vecteurs d'attaque et des tests basés sur Docker.
[!CAUTION] CE DÉPÔT CONTIENT DU CODE DE PREUVE DE CONCEPT POUR LES VULNÉRABILITÉS CVE-2026-40261 ET CVE-2026-40176 DANS COMPOSER.
[!CAUTION] LE CODE EST DESTINÉ UNIQUEMENT À DES FINS ÉDUCATIVES ET DE TEST.
[!CAUTION] N'UTILISEZ PAS CE CODE DANS DES ENVIRONNEMENTS DE PRODUCTION OU CONTRE DES SYSTÈMES SANS AUTORISATION APPROPRIÉE.
[!CAUTION] ASSUREZ-VOUS TOUJOURS D'AVOIR L'AUTORISATION AVANT DE TESTER TOUTE VULNÉRABILITÉ DE SÉCURITÉ.
Ce dépôt démontre deux vulnérabilités dans Composer liées à l'injection de commandes via le pilote VCS Perforce.
Il existe trois vecteurs d'attaque :
Les fichiers composer.json.vector1 et composer.json.vector2 contiennent les charges utiles pour chacun des deux vecteurs. Chaque charge utile est conçue pour exécuter une commande qui crée un fichier dans le répertoire /tmp, démontrant ainsi une injection de commandes réussie.
Pour tester les vulnérabilités, vous pouvez suivre les étapes suivantes. Assurez-vous d'avoir Docker installé sur votre système pour exécuter le conteneur Composer.
composer.json correspondant.Par exemple, pour tester le VECTEUR 1, copiez composer.json.vector1 vers composer.json en exécutant :
cp composer.json.vector1 composer.json

Par exemple, en utilisant la version 2.9.3 de Composer (vulnérable à la fois à CVE-2026-40261 et CVE-2026-40176) :
docker container run --rm --platform linux/amd64 -v ./:/app -it composer:2.9.3 bash

ls -l /tmp/
Attendez-vous à constater que le fichier créé par l'injection de commandes (par exemple, pwned_via_url ou pwned_via_user) n'est pas présent.

composer install --prefer-dist

ls -l /tmp/
Attendez-vous à constater que le fichier créé par l'injection de commandes (par exemple, pwned_via_url ou pwned_via_user) est maintenant présent, ce qui indique que l'injection de commandes a réussi.
