
Prova de conceito demonstrando vulnerabilidades de injeção de comandos no driver Perforce do Composer, com dois vetores de ataque e testes baseados em Docker.
[!CAUTION] ESTE REPOSITÓRIO CONTÉM CÓDIGO DE PROVA DE CONCEITO PARA AS VULNERABILIDADES CVE-2026-40261 E CVE-2026-40176 NO COMPOSER.
[!CAUTION] O CÓDIGO DESTINA-SE APENAS A FINS EDUCACIONAIS E DE TESTE.
[!CAUTION] NÃO USE ESTE CÓDIGO EM AMBIENTES DE PRODUÇÃO NEM CONTRA SISTEMAS SEM A DEVIDA AUTORIZAÇÃO.
[!CAUTION] CERTIFIQUE-SE SEMPRE DE QUE TEM PERMISSÃO ANTES DE TESTAR QUALQUER VULNERABILIDADE DE SEGURANÇA.
Este repositório demonstra duas vulnerabilidades no Composer relacionadas à injeção de comandos através do driver VCS Perforce.
Existem três vetores de ataque:
Os arquivos composer.json.vector1 e composer.json.vector2 contêm os payloads para cada um dos dois vetores. Cada payload foi concebido para executar um comando que cria um arquivo no diretório /tmp, demonstrando a injeção de comandos bem-sucedida.
Para testar as vulnerabilidades, pode utilizar os seguintes passos. Certifique-se de que tem o Docker instalado no seu sistema para executar o contentor do Composer.
composer.json correspondente.Por exemplo, para testar o VETOR 1, copie composer.json.vector1 para composer.json executando:
cp composer.json.vector1 composer.json

Por exemplo, utilizando a versão 2.9.3 do Composer (que é vulnerável tanto ao CVE-2026-40261 como ao CVE-2026-40176):
docker container run --rm --platform linux/amd64 -v ./:/app -it composer:2.9.3 bash

ls -l /tmp/
Espere ver que o ficheiro criado pela injeção de comandos (por exemplo, pwned_via_url ou pwned_via_user) não está presente.

composer install --prefer-dist

ls -l /tmp/
Espere ver que o ficheiro criado pela injeção de comandos (por exemplo, pwned_via_url ou pwned_via_user) está agora presente, indicando que a injeção de comandos foi bem-sucedida.
