
Prova di concetto che dimostra le vulnerabilità di iniezione di comandi nel driver Perforce di Composer, con due vettori di attacco e test basati su Docker.
[!CAUTION] QUESTO REPOSITORY CONTIENE CODICE PROOF-OF-CONCEPT PER LE VULNERABILITÀ CVE-2026-40261 E CVE-2026-40176 IN COMPOSER.
[!CAUTION] IL CODICE È DESTINATO SOLO A SCOPI EDUCATIVI E DI TEST.
[!CAUTION] NON UTILIZZARE QUESTO CODICE IN AMBIENTI DI PRODUZIONE O CONTRO SISTEMI SENZA LA DOVUTA AUTORIZZAZIONE.
[!CAUTION] ASSICURARSI SEMPRE DI AVERE IL PERMESSO PRIMA DI TESTARE QUALSIASI VULNERABILITÀ DI SICUREZZA.
Questo repository dimostra due vulnerabilità in Composer relative all'iniezione di comandi tramite il driver VCS Perforce.
Esistono tre vettori di attacco:
I file composer.json.vector1 e composer.json.vector2 contengono i payload per ciascuno dei due vettori. Ogni payload è progettato per eseguire un comando che crea un file nella directory /tmp, dimostrando l'avvenuta iniezione di comandi.
Per testare le vulnerabilità, puoi seguire i seguenti passaggi. Assicurati di avere Docker installato sul tuo sistema per eseguire il container Composer.
composer.json.Ad esempio, per testare il VETTORE 1, copia composer.json.vector1 in composer.json eseguendo:
cp composer.json.vector1 composer.json

Ad esempio, utilizzando la versione 2.9.3 di Composer (vulnerabile sia a CVE-2026-40261 che a CVE-2026-40176):
docker container run --rm --platform linux/amd64 -v ./:/app -it composer:2.9.3 bash

ls -l /tmp/
Ci si aspetta di vedere che il file creato dall'iniezione di comandi (ad es., pwned_via_url o pwned_via_user) non sia presente.

composer install --prefer-dist

ls -l /tmp/
Ci si aspetta di vedere che il file creato dall'iniezione di comandi (ad es., pwned_via_url o pwned_via_user) sia ora presente, indicando che l'iniezione di comandi è riuscita.
