
Prueba de concepto que demuestra vulnerabilidades de inyección de comandos en el controlador Perforce de Composer, con dos vectores de ataque y pruebas basadas en Docker.
[!CAUTION] ESTE REPOSITORIO CONTIENE CÓDIGO DE PRUEBA DE CONCEPTO PARA LAS VULNERABILIDADES CVE-2026-40261 Y CVE-2026-40176 EN COMPOSER.
[!CAUTION] EL CÓDIGO ESTÁ DESTINADO ÚNICAMENTE CON FINES EDUCATIVOS Y DE PRUEBA.
[!CAUTION] NO UTILICE ESTE CÓDIGO EN ENTORNOS DE PRODUCCIÓN NI CONTRA SISTEMAS SIN LA DEBIDA AUTORIZACIÓN.
[!CAUTION] ASEGÚRESE SIEMPRE DE TENER PERMISO ANTES DE PROBAR CUALQUIER VULNERABILIDAD DE SEGURIDAD.
Este repositorio demuestra dos vulnerabilidades en Composer relacionadas con la inyección de comandos a través del controlador VCS de Perforce.
Hay tres vectores de ataque:
Los archivos composer.json.vector1 y composer.json.vector2 contienen las cargas útiles para cada uno de los dos vectores. Cada carga útil está diseñada para ejecutar un comando que crea un archivo en el directorio /tmp, demostrando una inyección de comandos exitosa.
Para probar las vulnerabilidades, puede seguir los siguientes pasos. Asegúrese de tener Docker instalado en su sistema para ejecutar el contenedor de Composer.
composer.json correspondiente.Por ejemplo, para probar el VECTOR 1, copie composer.json.vector1 a composer.json ejecutando:
cp composer.json.vector1 composer.json

Por ejemplo, usando la versión 2.9.3 de Composer (que es vulnerable tanto a CVE-2026-40261 como a CVE-2026-40176):
docker container run --rm --platform linux/amd64 -v ./:/app -it composer:2.9.3 bash

ls -l /tmp/
Espere ver que el archivo creado por la inyección de comandos (por ejemplo, pwned_via_url o pwned_via_user) no esté presente.

composer install --prefer-dist

ls -l /tmp/
Espere ver que el archivo creado por la inyección de comandos (por ejemplo, pwned_via_url o pwned_via_user) ahora esté presente, lo que indica que la inyección de comandos fue exitosa.
