インフラ・運用 2026.03.26

GitHubスター4万超のAIライブラリ「LiteLLM」がサプライチェーン攻撃を受けマルウェア版が配布|攻撃の全容と対策を解説

約13分で読めます

人気AIライブラリLiteLLMのPyPIパッケージにマルウェアが混入。セキュリティスキャナーTrivy経由でCI/CDが侵害され、SSHキーやAPIキーが盗まれる3段階攻撃の全容と、開発者が取るべき対策を詳しく解説します。

2026年3月24日、AI開発で広く使われるPythonライブラリ「LiteLLM」がサプライチェーン攻撃を受け、マルウェアが仕込まれたバージョンがPyPI(Pythonの公式パッケージリポジトリ)で約3時間にわたり配布されていたことが判明しました。

LiteLLMはGitHubで4万スター以上を獲得し、1日約340万回ダウンロードされる人気ライブラリです。OpenAI、Anthropic(Claude)、Google Geminiなど複数のAIプロバイダーを統一インターフェースで管理できるツールとして、多くの企業・開発者に利用されています。

この記事では、攻撃の全容、技術的な手法、影響範囲、そして開発者が取るべき対策を詳しく解説します。

攻撃のタイムライン

2026/03/19
Trivy GitHub Actionの改ざん
攻撃者がセキュリティスキャナー「Trivy」のGitタグを書き換え、悪意あるリリースv0.69.4を仕込む
2026/03/24 10:52 UTC
マルウェア版v1.82.8がPyPIに公開
盗んだPyPI認証情報を使って悪意あるバージョンをアップロード
2026/03/24 12:30 UTC
v1.82.7も侵害されていたことが判明
2つのバージョンで異なる感染手法を使用
2026/03/24 13:03 UTC
GitHubにIssue報告
しかし攻撃者によるスパム投稿で機能不全に
2026/03/24 20:15 UTC
PyPIからパッケージ削除・隔離
約3時間の公開期間で配布が停止

攻撃チェーン:Trivy → CI/CD → PyPI → LiteLLM

今回の攻撃が巧妙なのは、LiteLLMを直接攻撃したのではなく、CI/CDパイプラインの依存関係を経由した多段階攻撃だった点です。

Trivyの改ざん
攻撃者グループ「TeamPCP」がセキュリティスキャナーTrivyのGitHub Actionリポジトリに侵入。Gitタグを改ざんし、悪意あるコードを含むv0.69.4を正規版に見せかけた。
CI/CDパイプラインの侵害
LiteLLMのCI/CDパイプラインはTrivyのバージョンをピン(固定)していなかったため、自動的に改ざんされたバージョンが実行された。これにより、GitHub Actionsランナー環境から**PyPI公開用トークン(PYPI_PUBLISH)**が流出。
PyPIへのマルウェア公開
盗んだPyPIトークンを使い、GitHubリポジトリには存在しない悪意あるバージョン(1.82.7、1.82.8)をPyPIに直接アップロード。
開発者のマシンに感染
`pip install litellm`や`pip install --upgrade litellm`を実行した開発者のマシンで、マルウェアが自動実行。認証情報が外部に送信された。

依存関係のバージョンをピンしていないCI/CDパイプラインは、サプライチェーン攻撃の格好の標的です。 今回はTrivyのバージョン未固定が攻撃の起点となりました。

サーバー・インフラでお困りですか?

障害対応・移行・パフォーマンスチューニングなど、ご相談ください

無料で相談する

2つの感染手法

攻撃者は2つのバージョンで異なる感染手法を使用しており、検知を困難にしていました。

項目v1.82.7v1.82.8
手法ソースコード注入.pthファイル注入
埋め込み場所litellm/proxy/proxy_server.pylitellm_init.pth(site-packages直下)
発動条件litellm.proxyをimportした時Pythonインタプリタ起動時(import不要)
危険度非常に高
検知難易度中(コードレビューで発見可能)高(.pthは見落とされやすい)

.pthファイルとは? Pythonのsite-packagesディレクトリに置くと、Pythonインタプリタの起動時に自動的に読み込まれるファイルです。v1.82.8ではこの仕組みを悪用し、litellmをimportしなくても、同じPython環境でスクリプトを実行するだけでマルウェアが起動するようになっていました。さらに、子プロセスが同じ.pthを再トリガーし、指数関数的なフォークボムが発生するケースも報告されています。

マルウェアの3段階構造

マルウェアはbase64エンコード・難読化されたPythonコードで実装され、3段階で動作します。

第1段階:認証情報の大量収集

マシン上のあらゆる機密情報を収集します。

さらに、発見した認証情報を能動的に使用し、AWS APIへのクエリやKubernetesシークレットへのアクセスも行っていました。

第2段階:暗号化・外部送信

収集したデータは以下の方法で攻撃者のサーバーに送信されます。

1. ランダムなセッションキーを生成
2. AES-256-CBCで収集データを暗号化
3. 4096ビットRSA公開鍵でセッションキーを暗号化
4. tpcp.tar.gz としてアーカイブ化
5. https://models.litellm.cloud/ にHTTPS POSTで送信

送信先ドメインのmodels.litellm.cloudは、正規のLiteLLMドメインに似せて作られています。通信は暗号化されているため、ネットワーク監視でも内容を確認するのが困難です。

第3段階:永続化とバックドア

マルウェアはシステムに永続的なバックドアを設置します。

ローカル環境の場合:

  • ~/.config/sysmon/sysmon.pyにバックドアを設置
  • systemdユーザーサービスとして登録(再起動後も自動実行)
  • 50分ごとにC2サーバー(checkmarx.zone)をポーリングし、追加の命令を受信
  • 分析環境回避のため「youtube.com」を含む応答は無視するフィルタリング機構付き

Kubernetes環境の場合:

  • 全ノードのシークレットを読み取り
  • kube-system名前空間にnode-setup-{ノード名}という特権Podをデプロイ
  • クラスタ全体への横展開を実施

影響範囲と確認方法

影響を受ける条件

以下のすべてに該当する場合、影響を受けている可能性があります。

  1. 2026年3月24日 10:52〜20:15 UTCの間にlitellmをインストールまたはアップグレードした
  2. インストールされたバージョンが1.82.7または1.82.8

確認コマンド

# インストール済みバージョンを確認
pip show litellm

# pip のインストールログを確認
pip install --log /tmp/pip-log.txt litellm 2>/dev/null; cat /tmp/pip-log.txt

# 永続化の痕跡を確認
ls -la ~/.config/sysmon/
systemctl --user list-units | grep sysmon

# Kubernetes環境の確認
kubectl get pods -n kube-system | grep node-setup

影響を受けた場合の対処

マルウェアの除去
litellmをアンインストールし、パッケージマネージャキャッシュを削除。`~/.config/sysmon/`ディレクトリとsystemdサービスも削除。
認証情報のローテーション
**LiteLLM環境からアクセス可能だったすべての認証情報を変更。** SSHキー再生成、APIキー再発行、AWS/GCP/Azure認証情報の変更、DBパスワード変更。
Kubernetes環境の確認
`kube-system`名前空間に不審なPodがないか確認。Kubernetes Secretsの監査ログを確認。
セキュリティ監査
侵害された認証情報を使った不正アクセスがないか、クラウドサービスのアクセスログを確認。
安全なバージョンの再インストール
PyPIから安全なバージョン(1.82.6以前)をインストール。バージョンを明示的に指定すること。

開発者が学ぶべき教訓

今回の事件から、すべての開発者が意識すべきポイントをまとめます。

1. 依存関係のバージョンを固定する

# 悪い例(バージョン未固定)
- uses: aquasecurity/trivy-action@latest

# 良い例(コミットハッシュで固定)
- uses: aquasecurity/trivy-action@a1c3427f4351e6267b6f53de3225c2bae7ae0082

2. PyPIトークンの権限を最小化する

# プロジェクトスコープのトークンを使用(グローバルトークンは避ける)
# 2FAを必ず有効にする
# トークンの有効期限を設定する

3. ロックファイルのハッシュを検証する

# pip-tools でハッシュ付きロックファイルを生成
pip-compile --generate-hashes requirements.in

# インストール時にハッシュを検証
pip install --require-hashes -r requirements.txt

4. CI/CDのセキュリティを強化する

よくある質問

A
2026年3月24日 10:52〜20:15 UTC(日本時間19:52〜翌5:15)の間にインストール・アップグレードしていなければ影響ありません。`pip show litellm`でバージョンを確認してください。1.82.7または1.82.8でなければ安全です。
A
環境変数(APIキー含む)、SSHキー、AWS/GCP/Azure認証情報、Kubernetes設定、データベースパスワード、仮想通貨ウォレット情報、Gitクレデンシャル、シェル履歴など、マシン上のほぼすべての機密情報が漏洩した可能性があります。
A
LiteLLM公式は「ユーザーデータは流出していない」と説明しています。流出したのは開発者の認証情報であり、エンドユーザーのデータではありません。ただし、漏洩した認証情報を悪用されるリスクは残ります。
A
攻撃者はCI/CDパイプラインからPyPI公開用トークンを盗みましたが、GitHubリポジトリへの書き込み権限は取得できなかったためです。このため、GitHubのソースコードと実際に配布されたパッケージの内容が異なるという状況が生まれました。
A
依存関係のバージョン固定(コミットハッシュ指定)、PyPIトークンのプロジェクトスコープ化と2FA有効化、ロックファイルでのハッシュ検証、CI/CDのネットワーク制限が効果的です。

サーバー・インフラでお困りですか?

障害対応・移行・パフォーマンスチューニングなど、ご相談ください

無料で相談する

サーバー管理、丸ごとお任せください

サーバー保守・運用

監視・障害対応・パフォーマンス改善まで、安定稼働をサポートします

200件以上の制作実績 顧客満足度97% 初回相談無料

※ 通常1営業日以内にご返信します

まとめ

LiteLLMへのサプライチェーン攻撃は、**セキュリティスキャナー(Trivy)→ CI/CDパイプライン → パッケージリポジトリ(PyPI)**という多段階の攻撃チェーンにより実行されました。攻撃者グループ「TeamPCP」による計画的な攻撃であり、同様の手法で他のプロジェクトも標的になる可能性があります。

今回の事件は、以下の重要な教訓を示しています:

  • 依存関係のバージョンピンニングは必須(今回の根本原因)
  • CI/CDパイプラインは重要な攻撃対象になっている
  • GitHubとPyPIの内容は必ずしも一致しないことがある
  • 影響を受けたら即座に全認証情報をローテーションする必要がある

AI開発の現場ではLiteLLMのようなライブラリの利用が急速に増えています。便利なツールに依存するほど、サプライチェーン攻撃のリスクも高まります。日頃からの対策を怠らないようにしましょう。

この記事をシェア

サーバー・インフラの課題を解決します

構築・移行・監視・障害対応まで、安定した運用環境をご提供します。 初回相談は無料です。

※ 1営業日以内にご返信いたします

この技術でお困りなら

無料でプロに相談できます

相談する
AIに無料相談