OSSに注意!AI開発用「LiteLLM」にAPIキーを盗むコード混入、同じ環境の別のPythonプログラムにも影響

OSSに注意!AI開発用「LiteLLM」にAPIキーを盗むコード混入、同じ環境の別のPythonプログラムにも影響

2026年10月21日、AI開発用のLiteLLM1.107.0に、認証情報を盗むコードと外部から追加コードを実行する仕組みが混入していたと判明した。公式報告ではリリース工程への侵入を確認し、対象の配布物を取り下げている。

対象はPythonパッケージとコンテナイメージだ。別の開発ツールが必要とする部品として入っている場合も含め、2026年10月23日時点の対象と対処を整理する。

LiteLLM1.107.0に何が混入していたのか

LiteLLMは、複数のAIサービスのAPIを共通の方法で呼び出すライブラリ・プロキシだ。接続用のAPIキーなど、開発・運用環境の認証情報を扱う。

ソフトウェアの開発・配布経路へ不正な処理を混入させる攻撃を、サプライチェーン攻撃という。JFrogの解析では、配布ファイルに情報窃取処理と、外部から追加コードを実行させるバックドアが加えられていた。

不正な処理はインストール先のPython環境の起動時に読み込まれる。LiteLLMを使わないプログラムでも、同じ環境でPythonを起動すると実行され得る。

SafeDepの解析では、クラウド認証情報、開発用トークン、SSH鍵、AIサービスのAPIキー、プロキシのデータベースに保存された認証情報が収集対象だった。

PyPI・Dockerのどの配布物が対象か

Pythonパッケージの配布先であるPyPIでは、1.107.0が隔離状態になっている。インストール用ファイルのwheelは、Windows・macOS・Linux向けの全7個に不正コードが含まれていた。

配布経路対象の配布物提供されていた期間(日本時間)
PyPI1.107.0の全7wheel10月21日20:39:51〜22:23
Docker Hublitellm/litellmの対象タグ10月21日20:46:56〜23:20
GHCR
  • berriai/litellm
  • berriai/litellm-database
  • berriai/litellm-non_root
10月21日20:46:56から、22:51までに利用不能

コンテナの対象タグは、v1.107.0と、当時のlatest・main-latest・main-stableだ。後者は指すイメージが変わるため、取得時点のイメージを調べる。表の期間は公式報告を日本時間へ換算した。

ビルドログ、依存関係を固定するロックファイル、インストール・起動履歴を照合する。コンテナの取得物を識別するダイジェストも公式報告と比較し、社内のキャッシュや保存済みイメージを含めて調べる。

インストールしていた場合に行う対処

公式は、外部通信が可能なホストに1.107.0をインストールしていた場合、認証情報が持ち出された前提で対応するよう案内している。流出の証拠を待たず、次の対処を進める。

  1. 対象環境を隔離し、記録を保全する。 通信を制限し、ファイル・プロセス・通信ログを保存する。調査にはクリーンな管理環境を使う。
  2. 取得・インストール・実行の履歴を分けて調べる。 疑わしい環境で確認目的のpythonやpipを起動すると、不正コードを再実行するおそれがある。保存済みの記録やファイルから確認する。
  3. 認証情報を失効・再発行する。 対象環境から読み取り可能だった認証情報を、クリーンな端末で交換し、古い値を無効にする。再構築の完了を待たずに進める。
  4. クリーンな環境から再構築する。 パッケージの入れ替えだけでは起動時処理やバックグラウンド処理が残るため、公式が案内する配布物で環境を作り直す。
  5. 利用履歴と通信を確認する。 関係するサービスの監査ログを調べ、再開後も想定外の認証情報の使用や外部通信を監視する。

ファイルの保存だけと、導入後の実行は区別する。Pythonやコンテナを実行した環境は侵害を前提に扱い、痕跡ファイルが見つからなくても調査を続ける。

OSSの更新で今後確認すること

今回、GitHubの正式なソースコードのタグには、wheelに含まれた不正ファイルがなかった。ソースコードと、実際にインストールする配布物を照合することが重要だ。

  1. 更新対象を記録する。 依存関係、配布元、バージョン、取得日、ハッシュやダイジェストを残す。
  2. 公式の更新案内と取得物を照合する。 バージョンを固定する場合も、配布物を確認する。
  3. 利用権限と秘密情報を絞る。 開発・CI・本番の認証情報を分け、各環境で不要なキーを読み取れる状態にしない。

2026年10月23日時点で、公式は一時的に1.106.2への固定を案内している。再構築時は公式の続報で推奨先を確認したい。

自社システムや開発環境のセキュリティ対策について、お気軽にご相談ください。

ブログ一覧へ