LiteLLM Supply Chain Compromise Exposes AI Developer Credentials to Malware Attacks
2026/10/22 gbhackers — LiteLLM バージョン 1.107.0 がサプライチェーン攻撃により侵害され、PyPI のホイール・パッケージとコンテナ・イメージを通じて、認証情報を窃取するマルウェアが配布された。2026年10月21日に Socket の研究者たちが報告したのは、アプリケーションが LiteLLM をインポートしていなくても、悪意のある Python 起動フックが実行され、クラウドの認証情報/開発者の機密情報/AI 関連の認証ファイルが漏えいする可能性である。

LiteLLM のサプライチェーン侵害
Socket が、パッケージの公開から約 7 分後に検出したのは、7 件のホイール・ファイルであり、その影響の範囲は macOS/Linux/Windows 向けのディストリビューションに及ぶ。
LiteLLM は、LLM のプロバイダーを共通のインターフェイスで利用するためのライブラリおよびプロキシであり、週間ダウンロード数は約 2,300 万件に達する。そのため、今回の侵害されたリリースは、本番環境や開発環境で使用される機密性の高い認証情報にアクセスし得る位置にあった。
- コンテナのビルド来歴 (Build Provenance) には、正規の
BerriAI/litellmリポジトリではなく、Berri-AI/litellmがソースとして記録されていた。 - 非公開の
BerriAI/project-releaserワークフローには、ハイフンを含む組織名を選択するソース所有者の上書き設定が記録されていた。 - 参照先のリビジョンに含まれるペイロード・ファイルは、PyPI のホイール・ファイルから発見されたものと一致していた。
- ビルドに加えられた変更には、Maturin の設定に
data = “cook”という行を追加する処理と、悪意のあるディレクトリを Docker のビルド・ステージにコピーする処理が含まれていた。
ただし、現在の証拠からは、この上書き設定が承認された方式や、アカウントやトークンへの侵害、当該ワークフローがホイール・ファイルの公開に使用されたのかどうかは明らかになっていない。
なお、調査の時点では、コンテナタグ v1.107.0/latest/main-latest/main-stable が、すべて同一のイメージ・インデックスを参照していた。そのため、影響範囲はバージョンを明示的に指定したデプロイ環境だけに留まらず、これらのタグを使用する環境にまで広がっていた。
悪意のあるホイール・ファイルは、Python のライブラリ・ディレクトリに次のファイルをインストールする。
cook.pthcook.pysitecustomize.py
起動フックには、次の 1 行の実行可能コードが含まれている。
import cook
このコードは、Python インタープリタの通常の初期化処理中に、情報収集プログラムを起動する。そのため、影響を受けた環境で Python や pip を起動すると、マルウェアが再実行される可能性があり、通常の調査作業そのものが危険を伴うケースが生じる。
デコードされた privcollect ペイロードには、AWS などの各種サービスや機密情報を対象とする、16 個の情報収集モジュールが含まれている。収集対象として挙げられるのは、AWS/Azure/Google Cloud/Kubernetes/SSH 鍵/ブラウザデータベース/環境変数/開発者向け設定ファイルなどである。
AI 関連の収集対象としては、Codex/Claude/Gemini/Cursor などの AI アシスタントが挙げられている。その一方で、データベース用モジュールは、LiteLLM のデータベース・テーブルから、保存されている認証情報やモデル設定を取得しようとする。
ただし、個々のデプロイ環境において、実際に情報の窃取が成功したことを示す証拠は確認されていない。
収集された JSON データは AES-256-CBC で暗号化され、その暗号鍵は RSA-4096-OAEP を用いてラップされる。生成されたアーカイブは、正規のヘルスチェック機能を装う /healthcheck エンドポイントにアップロードされる。
これとは別に、sitecustomize.py は独立したローダーを起動する。このローダーは、GitHub 上にホストされた参照先情報を読み取り、ダウンロードした Python ファイルを、署名やハッシュ値の検証を行わずに実行できる。ある調査時点では、参照先情報が空だったため、ダウンロード処理は実行されなかった。
この状態においても、それぞれの情報収集プログラムは無効化されていなかった。ローダーは 1 時間ごとに再試行する仕組みとなっているが、これは 1 時間ごとにデータが外部送信されていたことを確認するものではない。
侵害の痕跡 (IoC)
| Type | Indicator |
|---|---|
| Package | litellm==1.107.0 |
| Exfiltration | hxxp://www[.]litellm[.]dev/healthcheck |
| Loader pointer | hxxps://raw[.]githubusercontent[.]com/letters9813/pythonclient-test/main/domain.txt |
| Upload header | X-Token: XWiA8gZNa7NcX2XRoAEb |
| Loader lock | /tmp/remote_code_loader.lock |
| Collection marker | /tmp/.pc_once_72129118c59f5636c0bb |
| cook.py SHA-256 | 9dd0a3926f96a37eb86cf1ee2310d9be93139cc4ebef3ef9e2efe9531390be25 |
| sitecustomize.py SHA-256 | 34bef04fe88ac9d0aae0475630b1738681d15b94f233ac8aa46eacf5968305fa |
注: IP アドレスやドメインは、意図しない名前解決やハイパーリンク化を防ぐため、[.] などを用いて意図的に無効化 (Defang) されている。有効な形式への復元 (Re-fang) は、MISP/VirusTotal/SIEM などの、管理された脅威インテリジェンス環境内でのみ実施すること。
推奨される対応
ユーザー組織にとって必要なことは、侵害されたリリースの使用を禁止し、コンテナ・イメージのダイジェストを確認した上で、インストール後に Python が実行された環境を隔離することである。
証拠の保全には、影響を受けた Python インタープリタではなく、信頼できる別のツールを使用すべきである。
今後の環境に関しては、内容を検証済みのアーティファクトから再構築し、漏えいした可能性のある認証情報を、安全なシステムからローテーションする必要がある。
LiteLLM を削除するだけでは、すでに漏えいした認証情報を無効化することはできず、既存のローダーの動作も停止できない。
また、パッケージの保守担当者に求められるのは、リポジトリの識別情報/リリース権限/公開されたアーティファクトを、承認済みの正規ソースと照合して検証することである。
この記事は、LLM 統合ライブラリである LiteLLM における不正パッケージ配布と情報奪取の危険性について解説するものです。配布基盤の不正規な書き換えや自動起動仕掛けの組み込みが背景に存在します。影響として、クラウド利用権限や各種設定データ/暗号鍵の外部漏えいが生じる恐れがあります。対応策として、該当版の利用禁止/環境全体の遮断/シークレット情報の更新/信頼できる構成からの環境再構築が求められます。
You must be logged in to post a comment.