AIツール「LiteLLM」にパスワードを盗む不正プログラムが混入、インストールするだけで別のPythonプログラムにも影響
複数のAIモデルを簡単に利用できるオープンソースツール「LiteLLM」のバージョン1.107.0にパスワードなどを盗み出す不正プログラムが仕込まれていたことが判明しました。不正プログラムはLiteLLMをインストールした環境でPythonを起動するだけで実行される仕組みで、攻撃者が遠隔操作で別のプログラムを実行できる機能も備えていたとのことです。
Compromised LiteLLM 1.107.0 on PyPI Installs a Credential Stealer and Backdoor - Real-time Open Source Software Supply Chain Security
https://safedep.io/litellm-pypi-compromise-credential-stealer-backdoor/
LiteLLMはプログラミング言語「Python」のパッケージを公開・配布するサービス「Python Package Index(PyPI)」でも提供されています。開発者はPyPIからLiteLLMをインストールできますが、2026年10月21日に公開されたバージョン1.107.0には悪意あるファイルが含まれていました。
セキュリティ企業SafeDepの調査によると、不正プログラムはWindows、macOS、Linux向けに配布された7種類のパッケージすべてに含まれていました。一方でLiteLLMの公式GitHubリポジトリに公開されているソースコードには悪意あるファイルが存在せず、正規の開発コードと実際に配布されたパッケージの内容が食い違っていたことが確認されています。
不正プログラムは「cook.pth」「cook.py」「sitecustomize.py」という3つのファイルで構成されていました。Pythonには起動時に特定の設定ファイルやプログラムを自動的に読み込む仕組みがあり、攻撃者はPythonの起動時に読み込まれる「.pth」ファイルを悪用して情報を盗み出す「cook.py」が自動実行されるように細工していました。つまり、LiteLLMを使用していなくても同じ環境でPythonを起動するだけで不正プログラムが実行されるというわけです。
情報窃取プログラムはブラウザに保存されたパスワードや閲覧履歴、SSH接続に使う秘密鍵、クラウドサービスの認証情報などを収集するように作られていました。さらに、Claude CodeやCursor、GitHub CopilotなどのAI開発ツールの認証情報や、LiteLLMが管理するAIサービスのAPIキーも標的になっていたとのこと。
収集された情報は暗号化された上で「www.litellm.dev」という外部サーバーに送信される仕組みでした。暗号化には攻撃者が秘密鍵を持つ方式が使われており、通信内容を調べても盗まれた情報を簡単には確認できないようになっていました。
さらに「sitecustomize.py」には攻撃者が遠隔操作でプログラムを実行するためのバックドアも仕込まれていました。バックドアはPythonの起動に合わせて動作し、バックグラウンドで処理を続けます。1時間ごとにGitHub上のファイルを確認して接続先のサーバーを取得し、情報窃取プログラムを再実行するとともに、攻撃者が用意した別のプログラムをダウンロードして実行するようになっていました。
攻撃者はGitHub上のファイルを書き換えるだけで接続先を変更できるため、感染した環境で新たな不正プログラムを実行させることも可能でした。ただし、SafeDepが調査した時点では接続先を指定するGitHubアカウントが削除されており、実際に配布された追加プログラムの内容までは確認できなかったそうです。
LiteLLMの開発チームによると、問題のバージョン1.107.0は日本時間の2026年10月21日20時39分頃にPyPIで公開され、約2時間後に削除されました。また、コンテナと呼ばれる実行環境をまとめて配布するDocker向けの一部イメージにも悪意あるコードが混入していたことが確認されています。
今回の問題についてLiteLLMの開発チームは、影響を受けた環境では認証情報が流出した可能性を考慮し、不正なファイルの削除や実行環境の再構築、パスワードやAPIキーの変更などを行うよう呼びかけています。また、不正なファイルを削除する前にPythonを起動すると不正プログラムが再び実行されるため、通常のアップデート操作から始めてはいけないとのこと。
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.





