このページは翻訳版です。正式な本文は英語版です。 英語版を読む

litellm · mcp · cve-2026-42271 · kev · llm-abuse · honeypot-detection · sandbox-evasion

66秒で完了するLiteLLM MCP偵察: ハニーポットを検査するスクリプト化クライアント

CVE-2026-42271はLiteLLMのMCPテストエンドポイントに存在するコマンドインジェクションの欠陥であり (1.74.2から1.83.6、CVSS 8.7、2026年6月8日以降CISA KEVに掲載)、9月6日、あるクライアントがKinryū Labsのデコイ上でLiteLLMのMCPツール面を悪用した。66秒間に42件のスクリプト化されたシェルコマンドを実行し、続いてホストがハニーポットかどうかを7回確認し、その後沈黙した。

著者 Davis Zheng·

CVE
CVE-2026-42271
CVSS
8.7

TLP:CLEAR。一般公開可。Kinryū Labsハニーポットセンサーネットワークにより取得。以下の指標はdefang処理済み。

エグゼクティブサマリ

  • 42MCPツール経由で送り込まれたシェルコマンド
  • 66 秒最初のコマンドから最後まで
  • 7最後の20秒間に実施されたハニーポット検査
  • 19月5日から12日までの本活動の送信元数

CVE-2026-42271はLiteLLMのMCPテストエンドポイントに存在するコマンドインジェクションの欠陥であり (1.74.2から1.83.6、CVSS 8.7、2026年6月8日以降CISA KEVに掲載)、9月6日、あるクライアントがKinryū LabsのLiteLLMデコイ上でLiteLLMのMCPツール面を悪用した。香港のVPSアドレスからデコイのMCPツールを列挙し、66秒間にそれらを通じて42件のシェルコマンドを送り込んだ。自分は誰か、コンテナ内にいるか、rootのSSH鍵は読めるか、どのようなネットワークか、といった内容である。最後の20秒はホストが実在するかの確認に費やし、マーカーファイル、時刻の読み取り、/dev/urandomからの取得、そして3回のタイミング計測用sleepを実行したのち停止した。9月12日までそれ以上の活動はなかった。1.83.7未満のLiteLLMをポート4000到達可能な状態で運用しているなら、アップグレードすべきである。検知のセクションにリクエスト形状用のルールとハニーポット検査用のルールを掲載している。

リクエストは/mcp上のtools/call宛だった。アドバイザリが記述する欠陥は/mcp-rest/test/*エンドポイントにあるが、本クライアントはそこに触れていない。したがって本活動は当該CVEそのものではなく、LiteLLMのMCPツール面の悪用として記述する。

主要な判断

  • これは単一ターゲットに対するスクリプト実行だった。 クライアントは66秒間に42件のツール呼び出しを、コマンド間隔130から250ミリ秒のバーストで送信し、バースト間には9から26秒の休止を置き、37種類の異なるコマンドを使用した。送信元は1アドレスのみ、訪問は1回きりで、9月5日から12日の間における本活動の唯一の送信元だった。確度は中。
  • 偵察の後、クライアントは7件のハニーポット検査を実行して停止した。 01:28:21から01:28:41の間に、stderrのルーティング、シェルラッパーの処理、エラー経路、ファイルシステムの状態、時刻、エントロピー、sleepのタイミングを検査した。最後のコマンドはsleep 8であり、9月12日までこのアドレスからそれ以上の通信はなかった。確度は中。
  • 偵察はホストから外へ出る経路を探していた。 rootアカウントの秘密鍵ディレクトリを2回列挙し、/proc/1/cgroupと/proc/1/cmdlineを読み、ネットワークアドレスを列挙した。概念実証の確認にはそのいずれも不要である。確度は中。
  • プロキシキーは提示されなかった。 このアドレスからの/mcpリクエストはいずれもプロキシキーを提示しておらず、これはStarletteのHostヘッダバイパスCVE-2026-48710と組み合わせた非認証の連鎖と整合する。リクエストが実際にそのバイパスを利用したというのは推論である。確度は低。

タイムライン

  • 01:24:44 UTC初回接触。TCP/4000上の/mcpへのHTTP POST、Mozilla/5.0、MCPツール面の列挙。
  • 01:25:46 UTC2回目の列挙プローブ。クライアントプロファイルは同一。
  • 01:27:30 UTCクライアントがcurl/8.20.0に切り替わり、新たなHTTPクライアントフィンガープリントでツール面を再列挙。
  • 01:27:35 UTC最初のコマンドインジェクション。bashツールにコマンド'id'を渡し、直後に/etc/hostnameのread_fileを実行。
  • 01:27:44 UTC複合偵察ワンライナー。hostname、uname -a、root鍵ディレクトリの列挙、cat /proc/1/cgroup。
  • 01:27:55 UTC2つ目の複合コマンド。pwd、whoami、/proc/1/cgroup、ip a | grep inet、ls /。
  • 01:28:21 UTCデコイ検出への転換。stderrのリダイレクト、sh -cおよびbash -cラッパーの処理、ls -la /etc/passwd。
  • 01:28:31 UTCエラー経路と状態保持の検査。存在しないパスとファイル、/tmp/marker_uniq_93817へのtouchとcat。
  • 01:28:32 UTC時刻とエントロピーの検査。date +%s、head -c 50 /dev/urandom | base64。
  • 01:28:41 UTCタイミング検査sleep 0 / 5 / 8、その後セッション終了。9月12日までこのアドレスからのさらなる活動はなし。

セッションの経過

01:27:35  id
01:27:44  hostname; uname -a | cut -c1-120; ls -la [root key directory] 2>&1 | head -5; cat /proc/1/cgroup 2>/dev/null | head -3
01:27:55  pwd; whoami; cat /proc/1/cgroup | head -2; ip a | grep inet | head -3; ls / | head -15
01:28:21  echo hi 1>&2
01:28:32  date +%s
01:28:32  head -c 50 /dev/urandom | base64
01:28:41  sleep 8

偵察はroot鍵とコンテナ境界に直行する

クライアントは最初の3分間で2つの異なるアイデンティティを提示した。01:24:44からMozilla/5.0のユーザーエージェントでツール面の列挙プローブを2回送信した。その3分弱後にcurl/8.20.0へ変更し、HTTPクライアントフィンガープリントもそれに応じて変化させ、tools/call経由でツールの呼び出しを開始した。

まずアイデンティティの確認としてid、hostnameを実行し、次に/etc/hostnameに対してread_fileを実行し、続いて上記セッションに示した2つの複合ワンライナーを実行した。

スクリプトはrootアカウントの秘密鍵ディレクトリを2回列挙し、ip a | grep inetを実行した。概念実証の確認に鍵ディレクトリの列挙やネットワーク列挙は不要であるため、この偵察はプロキシホストから外部へ移動するための準備と読む。/proc/1/cgroupと/proc/1/cmdlineの読み取りは、シェルがコンテナ内にあるかどうかを確認するものである。

01:28:21、クライアントはホストについて尋ねるのをやめ、ホストを試し始める

20秒間、クライアントは自分が実在のホストと通信しているかを検査した。stderrが独自のチャネルで返ってくるかを見るためにecho hi 1>&2を実行し、シェル呼び出しの処理を確認するためにsh -cとbash -cのラッパーを使い、エラー経路の忠実性を見るために意図的に存在しないパスに対してlsとcatを実行し、呼び出し間でファイルシステムが状態を保持するかを見るために/tmp内の同一マーカーファイルへのtouchとそれに続くcatを実行し、時刻の進行のためにdate +%s、エントロピーのためにhead -c 50 /dev/urandom | base64、タイミングの忠実性のためにsleep 0、sleep 5、sleep 8を実行した。

最後のコマンドは01:28:41のsleep 8だった。9月12日までこのアドレスからそれ以上の通信は届かなかった。なぜ停止したかは不明である。これをハニーポット検査とそれに続く停止判断として読む根拠は事象の順序であり、確度は中である。

LLMプロキシのエンドポイントを信用する前にハニーポットかどうか検査するオペレータは、当研究所にとって目新しいものではない。keyHunterレポートでは、ハニーポットを認識するよう作られた検証機構を持つ事例を記述している。両者を結びつける指標はない。

攻撃者の帰属

タイミングは1点を確定させる。これはスクリプトだった。66秒間に42件の呼び出しを、バースト内ではコマンド間隔130から250ミリ秒、バースト間には9から26秒の休止を置いて発射する。これはエクスプロイトし、鍵とコンテナ境界を探し、ホストをフィンガープリントして退出するツーリングである。これは標的型オペレータのツールキット、あるいは焼き付き回避のプレフィルタを備えたレッドチームフレームワークと整合する。一方、固定されたペイロードを1つ再生し繰り返し戻ってくるコモディティ的な大量エクスプロイトとは整合しない。本クライアントは37種のコマンド文字列を変化させ、訪問は1回きりで、9月5日から12日の間における本活動の唯一の送信元だった。忠実性検査の一括実行はハニーポット検出研究の手法でもあるため、セキュリティ研究の調査である可能性は完全には排除できない。ただし送信元は商用の香港VPSレンジであり、クライアントは研究者としての身元を一切表明しておらず、セッションはrootの鍵ディレクトリを列挙し/etc/passwdを読んでいる。まともな調査はそうしたことをしない。

帰属についてはこれ以上踏み込まない。当該アドレスはAS140227 (Hong Kong Communications International、177.4.0[.]0/20) に属し、商用ホスティングである。VirusTotalでは悪性2件、疑わしい2件のエンジン判定が出ているが、ベンダーによる命名はない。また当該欠陥はKEV掲載済みで概念実証コードも公開されているため、能力から攻撃者を語ることはできない。

侵害指標

以下のネットワーク指標1件はdefang処理済み。フィンガープリントとパスは観測されたまま記載する。

ネットワーク

指標文脈
177.4.12[.]119月5日から12日の間における本活動の唯一の送信元。全リクエストがTCP/4000上の/mcp宛。AS140227、香港

ホスト上の痕跡

指標文脈
/tmp/marker_uniq_<digits>ハニーポット検査で書き込まれ読み戻されたマーカーファイル。本セッションでの接尾辞は93817だったため、パターンでハンティングすること

挙動

指標文脈
po11nn050000_6e4c6fcb1a9bcurl/8.20.0によるコマンドフェーズのJA4H形式HTTPクライアントフィンガープリント
po11nn070000_39fa8e08ab4c初期のMozilla/5.0による列挙フェーズのJA4H形式HTTPクライアントフィンガープリント

検知

Sigma

LiteLLMプロキシへシェルコマンドを運ぶMCP tools/call (候補)。

title: MCP tools/call Carrying A Shell Command To A LiteLLM Proxy
id: 5b0f6c1e-2f0a-4d0e-9a53-6b1d0f7a42c1
status: experimental
description: POST to a LiteLLM MCP endpoint whose JSON body invokes a tool with a command argument. Needs request-body logging at the reverse proxy; the body field name is a placeholder for whatever your proxy calls it. Any hit on LiteLLM below 1.83.7 should be treated as exploitation.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-42271
logsource:
  category: webserver
detection:
  selection_request:
    cs-method: POST
    cs-uri-stem:
      - /mcp
      - /mcp-rest/test/connection
      - /mcp-rest/test/tools/list
  selection_call:
    request_body|contains: '"method": "tools/call"'
  selection_command:
    request_body|re: '"(command|args)"\s*:'
  condition: all of selection_*
falsepositives:
  - An MCP shell tool you expose on purpose to trusted clients
level: high

LLMプロキシプロセスから生成されたハニーポット忠実性検査 (候補)。

title: Honeypot Fidelity Checks Spawned By An LLM Proxy Process
id: 0c9a7e52-8d1b-4a38-b0f4-3e5f2a9d7c10
status: experimental
description: A proxy process spawning the checks a client uses to decide whether the host is emulated. Seen immediately before the client abandoned the session. Works from ordinary process telemetry on the proxy host.
logsource:
  product: linux
  category: process_creation
detection:
  selection_parent:
    ParentImage|endswith:
      - /python
      - /python3
      - /litellm
  selection_checks:
    CommandLine|contains:
      - /dev/urandom
      - date +%s
      - /proc/1/cgroup
      - marker_uniq_
  condition: selection_parent and selection_checks
falsepositives:
  - Container entrypoint or health-check scripts that read /proc/1/cgroup
level: high

検知ロジック

  • 単一送信元からの忠実性検査の一括実行 (挙動ベース、候補)。単一送信元から120秒以内に、/dev/urandom、‘date +%s’、‘^sleep [0-9]+$’、‘echo .* 1>&2’、’^(sh|bash) -c ‘、および同一の/tmpパスへのtouchとそれに続くcat、にマッチする異なるコマンドを数える。3カテゴリ以上に該当する場合、クライアントは標的が実在するかを判断している。セッションキャプチャ全体を保全すること。
  • LiteLLMのデフォルトポートにおける/mcpへの非認証POST (ネットワーク、候補)。宛先ポート4000、メソッドPOST、パス/mcp、認可ヘッダなし。curlフェーズのフィンガープリントpo11nn050000_6e4c6fcb1a9bと組み合わせること。

対処

  • LiteLLMを1.83.7以降にアップグレードする。この修正はMCPテストエンドポイントにコマンドの許可リストとPROXY_ADMINロールの検査を追加する。
  • 直ちにアップグレードできない場合は、リバースプロキシでPOST /mcp-rest/test/connectionとPOST /mcp-rest/test/tools/listを遮断し、TCP/4000をインターネットに公開しない。
  • 同一スタック上でStarletteのHostヘッダバイパスCVE-2026-48710にパッチを適用する。両者を連鎖させると非認証のリモートコード実行が成立する。
  • プロキシが呼び出すよう設定されているすべてのMCPサーバを棚卸しし、そのcommandとargsを二次的なインジェクションの観点でレビューする。
  • プロキシプロセスの環境変数やマウントされた認証情報ファイルから到達可能なプロバイダAPIキー、LITELLM_MASTER_KEYの値、仮想キーをすべてローテーションする。
  • ホスト上で/tmp/marker_uniq_、およびid、whoami、uname、getentやrootアカウントの鍵ディレクトリの列挙を実行するプロキシプロセスの子プロセスをハンティングする。

MITRE ATT&CKマッピング

戦術技術観測内容
初期アクセスT1190 Exploit Public-Facing ApplicationTCP/4000上で公開されていたLLMプロキシに対する42件のMCP tools/call呼び出し。そのMCPツール面を悪用した。
実行T1059.004 Command and Scripting Interpreter: Unix Shellsh -cおよびbash -cラッパーを含むシェルワンライナーでMCP bashツールを駆動。
探索T1082 System Information Discoveryuname -a、cat /etc/os-release、uname -r、hostname -f、ls -la /、cat /proc/1/cmdline。
探索T1033 System Owner/User Discoveryid、id -u、whoami、getent passwd root、cat /etc/passwd | head -3。
認証情報アクセスT1552.004 Unsecured Credentials: Private Keys最初の偵察バーストにおけるrootアカウントの秘密鍵ディレクトリの2回の列挙。
防御回避T1497 Virtualization/Sandbox Evasion/proc/1/cgroupによるコンテナ検査、続いて最後の20秒間の7項目の検査群。
収集T1005 Data from Local System/etc/hostnameに対して実行されたMCP read_fileツール。

参考資料

手法とアナリストノート

本レポートは1件の送信元アドレスと10件の時刻付き観測に基づく。センサーテレメトリから読み取り、公開脅威インテリジェンスフィードとエンリッチメント照会に照らして確認したもので、対象は2026年9月6日の活動と、9月5日から12日にかけてのピボットである。本活動は探索の段階で停止しており、セッション終了前にペイロードの取得、永続化、外向きのC2は試みられていない。

未解明の点は以下のとおり。

  • 177.4.12[.]11が9月6日より前に何をしていたか。
  • 停止後、オペレータがどこへ向かったか。
  • マーカーの接尾辞93817はツールに固定されているのか、実行ごとに生成されるのか。
  • この検査群は公開されているエクスプロイトやハニーポット検出ツールのいずれかと一致するか。
  • プロキシキーは必要だったのか、それともリクエストはHostヘッダバイパスCVE-2026-48710を利用したのか。

質問や訂正の連絡先: [email protected]。

How to cite
Kinryū Labs (2026). 66秒で完了するLiteLLM MCP偵察: ハニーポットを検査するスクリプト化クライアント. https://kinryu.sh/ja/reports/litellm-mcp-scripted-honeypot-test/