
Proof-of-concept, демонстрирующий уязвимости внедрения команд в драйвере Perforce для Composer, с двумя векторами атак и тестированием на основе Docker.
[!CAUTION] ЭТОТ РЕПОЗИТОРИЙ СОДЕРЖИТ КОД КОНЦЕПЦИИ (PROOF-OF-CONCEPT) ДЛЯ УЯЗВИМОСТЕЙ CVE-2026-40261 И CVE-2026-40176 В COMPOSER.
[!CAUTION] КОД ПРЕДНАЗНАЧЕН ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ И ТЕСТОВЫХ ЦЕЛЕЙ.
[!CAUTION] НЕ ИСПОЛЬЗУЙТЕ ЭТОТ КОД В ПРОИЗВОДСТВЕННЫХ СРЕДАХ ИЛИ ПРОТИВ СИСТЕМ БЕЗ СООТВЕТСТВУЮЩЕГО РАЗРЕШЕНИЯ.
[!CAUTION] ВСЕГДА УБЕДИТЕСЬ, ЧТО У ВАС ЕСТЬ РАЗРЕШЕНИЕ, ПРЕЖДЕ ЧЕМ ТЕСТИРОВАТЬ ЛЮБЫЕ УЯЗВИМОСТИ БЕЗОПАСНОСТИ.
Этот репозиторий демонстрирует две уязвимости в Composer, связанные с внедрением команд через драйвер VCS Perforce.
Существует три вектора атаки:
Файлы composer.json.vector1 и composer.json.vector2 содержат полезные нагрузки для каждого из двух векторов. Каждая полезная нагрузка предназначена для выполнения команды, которая создаёт файл в каталоге /tmp, демонстрируя успешное внедрение команд.
Чтобы протестировать уязвимости, вы можете выполнить следующие шаги. Убедитесь, что на вашей системе установлен Docker для запуска контейнера Composer.
composer.json.Например, чтобы протестировать ВЕКТОР 1, скопируйте composer.json.vector1 в composer.json, выполнив:
cp composer.json.vector1 composer.json

Например, используя версию Composer 2.9.3 (которая уязвима как к CVE-2026-40261, так и к CVE-2026-40176):
docker container run --rm --platform linux/amd64 -v ./:/app -it composer:2.9.3 bash

ls -l /tmp/
Ожидается, что файл, созданный внедрением команд (например, pwned_via_url или pwned_via_user), отсутствует.

composer install --prefer-dist

ls -l /tmp/
Ожидается, что файл, созданный внедрением команд (например, pwned_via_url или pwned_via_user), теперь присутствует, что указывает на успешное внедрение команд.
