汚染されたセキュリティスキャナーがLiteLLMへのバックドア設置の鍵となった経緯
2026年3月24日
30 分で読めます202litellm Pythonパッケージの
悪意の
Snykは
要約
影響を |
|
影響を | 1.82.7、1.82.8 |
安全な | ≤ 1.82.6 |
Snyk ID | |
初回検出 | 202 |
PyPIでの | \~202 |
攻撃者 | TeamPCP |
攻撃経路 | サプライチェーン:LiteLLMの |
ペイロードの | 3 |
情報流出先ドメイン |
|
MITRE ATT\&CK | T1546.018 |
主な出来事
時刻 | 証拠 | 出来事 |
|---|---|---|
202 |
| |
3月19日 17:43 UTC | Trivy | |
3月23日 12:58 UTC | Endor Labs(削除前の | Checkmarx KICS GitHub Actionが |
3月24日 10:39 UTC | Endor Labs(削除前の | 悪意の |
3月24日 10:52 UTC | 悪意の | |
3月24日 11:48 UTC | FutureSearch | |
3月24日 12:36 UTC | HNに | |
3月24日 \~12:44 UTC | GitHub issue #24512(コメントの | ボットに |
3月24日 13:03 UTC | FutureSearch(タイムスタンプ付きの | FutureSearchが |
3月24日 13:48 UTC | 新たに | |
3月24日 15:09 UTC | LiteLLMの | |
3月24日 15:27 UTC | 侵害された |
発見の経緯
FutureSearchのlitellmをlitellm_init.pthをsite-packages/内に
RAMの.pthの.pthが
攻撃の流れ
LiteLLMへの
3月1trivy-action GitHub Actionリポジトリのv0.69.4)を
3月2checkmarx.zoneが
3月2aptからPYPI_PUBLISHトークンをlitellmを

Hacker Newsに
2つの配信方式
2つの
1.82.7litellm/proxy/proxy_server.pyにlitellm.proxyを
1.82.8(.pthファイル)litellm_init.pthがsite-packages/に.pthのpip、python -c、
.pthファイルはRECORDファイルに
CPythonの.pth起動フックの
3段階のペイロード
ステージ1:情報収集
スクリプトは
システムデータ:ホスト名、
環境変数、 実行中の プロセス、 ネットワークルーティング、 /var/log/auth.logにある 最近の 認証ログ 認証情報:SSH秘密鍵、
.envファイル、Git認証情報、 シェル履歴に ある APIキー、 Slackと Discordの Webhookトークン、 CI/CD設定 (Jenkins、 Travis CI、 Terraform)、 /etc/shadowにある パスワードハッシュ クラウド認証情報:AWS認証情報と
設定、 GCPおよびAzureの サービスアカウントファイル、 IMDSへの 直接 クエリを 介した クラウドメタデータ、 AWS Secrets Manager、 SSM Parameter Store (スクリプトには IMDSv2の 署名処理が 完全に 実装されています) コンテナと
オーケストレーション:Dockerの config.json(レジストリ認証情報)、Kubernetesの kubeconfigファイル、サービスアカウントトークン、 シークレット、 証明書 暗号
資産:Bitcoin、 Ethereum、 Solana、 Cardano、 Moneroの ウォレットファイルと シードフレーズ、 Ledgerハードウェアウォレットの 設定

復号した
ステージ2:暗号化と情報流出
収集した
openssl randを使って 32バイトの AES-256セッションキーを 生成 データを
AES-256-CBC (PBKDF2鍵導出)で 暗号化 ハードコードされた
4096ビットRSA 公開鍵で セッションキーを 暗号化 (OAEPパディング) すべてを
tpcp.tar.gzにまとめる curlを使って バンドルを https://models.litellm.cloud/にPOST送信
models.litellm.cloudはlitellm.aiドメインとは
この
情報流出時にsession.key、payload.enc、session.key.enc、tpcp.tar.gz。

悪意のtpcp.tar.gzと
ステージ3:永続化とラテラルムーブメント
ローカルでの
バックドアと
なる Pythonスクリプトを ~/.config/sysmon/sysmon.py(または/root/.config/sysmon/sysmon.py)に書き込む 説明に
「System Telemetry Service」と 記載した systemdユーザーサービスを ~/.config/systemd/user/sysmon.serviceに作成 登録して
有効化: systemctl --user daemon-reload && systemctl --user enable --now sysmon.service
永続化スクリプトはhttps://checkmarx.zone/rawを/tmp/pglogに/tmp/.pg_stateで
Kubernetesでのkube-system内のalpine:latestをsysmonバックドアを
悪意のnode-setup-{node_name}(ノード名はsetupです。
TeamPCPについて
Wiz Threat Centerに@Persy_PCPと@teampcpを
LiteLLMへのtpcp.tar.gzとtpcp-docsで
攻撃者は、
hackerbot-clawとopenclaw)を
issueの投稿抑制
コミュニティメンバーがGitHub issue #24512で
侵害したkrrishdholakiaを
コミュニティは
確認された影響
影響を
プロジェクト | 証拠 |
|---|---|
DSPy | |
MLflow | PR #21971が |
OpenHands | |
CrewAI | |
langwatch | |
strands-agents/sdk-python | |
Arize Phoenix | |
nanobot | |
dreadnode/rigging | |
CoPaw | |
Aider | 安全を |
.pthのpip自体を
検出:影響を受けているか確認する
ステップ1:インストール済みバージョンを
出力に1.82.7または1.82.8が
ステップ2:永続化の
ステップ3:悪意の
ステップ4:ファイルの
ステップ5:ネットワーク上の
ステップ6:Kubernetesを
Snykで

影響を
Snykを
修復方法
1.82.7または
安全な<=1.82.6に
1.82.7または
ペイロードはpip install自体を
永続化の
痕跡を 削除する :
影響を
受けた システムの 認証情報を ローテーションする :
SSH秘
密鍵: 新しい 鍵を 生成し、 authorized_keys、GitHub、 GitLabから 古い鍵を 無効化する クラウド認証情報:AWSアクセスキー、
GCPサービスアカウントキー、 Azureサービスプリンシパル APIキー:
.envファイル、シェル環境変数、 CI/CDシークレット Dockerレジストリ認証情報:
~/.docker/config.jsonKubernetes:
~/.kube/config、クラスター内の サービスアカウントトークン システム上の
設定ファイルに 記載された データベースパスワード ~/.gitconfigまたはシステムの 認証情報ストアに 保存された Git認証情報 暗号資産ウォレットの
シードフレーズ
AWS Secrets Managerと
SSM Parameter Storeを 監査する。 インスタンスメタデータに アクセスできる 場合、 ペイロードは これらに 直接クエリを 実行します。
Kubernetesクラスターの
シークレットを 監査する。サービスアカウントトークンが 存在していた 場合、 すべての 名前 空間に ある シークレットが 読み取られた 可能性が あります。 kube-system内にnode-setup-*ポッドがないか 確認してください。
インプレースで
アップグレードするのではなく、 新しい 環境に クリーンな バージョンを インストールする:
pipのハッシュ検証で検出できなかった理由
ハッシュ検証では、
1.82.8のlitellm_init.pthファイルは、RECORDファイルにpip install --require-hashesも
インストール時に.pthファイルをsubprocess、base64、execなどの
より広範な傾向
この
LiteLLMは、
最初の
LLMツールに
侵害の痕跡
ファイルハッシュ:
ファイル | SHA-256 |
|---|---|
|
|
|
|
|
|
ネットワーク:
情報
窃取: https://models.litellm.cloud/(POST)C2ポーリング:
https://checkmarx.zone/raw(GET)
ファイルシステム:
~/.config/sysmon/sysmon.pyまたは/root/.config/sysmon/sysmon.py~/.config/systemd/user/sysmon.service(説明: 「System Telemetry Service」) /tmp/tpcp.tar.gz、/tmp/session.key、/tmp/payload.enc、/tmp/session.key.enc/tmp/.pg_state、/tmp/pglog
Kubernetes:
ポッド:
node-setup-{node_name}(kube-system内)コンテナ名:
setup、イメージ: alpine:latest
RSA
今すぐ行うこと
litellmの
バージョンを 確認する : pip show litellm | grep Versionすべての
環境で <=1.82.6に固定する snyk test --package-manager=pipを実行する 1.82.7または
1.82.8を インストールしていた 場合:認証情報を ローテーションし、 永続化の 痕跡を 確認する GitHub Actionsを
含め、 CI/CDパイプラインで ツールの バージョンが 固定されていない ものが ないか 監査する Kubernetesを
確認する : kubectl get pods -A | grep node-setup-
ホワイトペーパー
Python環境に 潜む AIセキュリティの 危機
開発スピードが



