Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】LiteLLM 1.107.0 was malware. A 5-minute check for AI developers, and the one-line setting that would have skipped it

2026年10月23日に「Dev.to」が公開したITニュース「LiteLLM 1.107.0 was malware. A 5-minute check for AI developers, and the one-line setting that would have skipped it」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

`litellm==1.107.0`はAI開発者の認証情報などを盗むマルウェア。感染確認とAPIキー全変更が必須。`uv`や`pip`で新規パッケージ導入を数日遅らせ、同様の被害を防ぐ対策が有効。

ITニュース解説

最近、AI開発の世界で大きな話題となったセキュリティインシデントがある。PythonのライブラリであるLiteLLMのバージョン1.107.0に、悪意のあるプログラム(マルウェア)が仕込まれて公開されたというものだ。この事件は、システムエンジニアを目指す皆さんにとっても、ソフトウェア開発におけるセキュリティの重要性を強く認識させるきっかけとなるだろう。

LiteLLMは、ChatGPTのような大規模言語モデル(LLM)と連携する際に使われる便利なツールだ。様々なLLMサービス(例えば、OpenAIのGPTシリーズ、AnthropicのClaude、GoogleのGeminiなど)と、統一されたインターフェースで簡単にやり取りできるようにする役割を担っている。多くのAIエージェントやプロキシが内部でLiteLLMを利用しているため、たとえあなたが自分でLiteLLMをインストールした記憶がなくても、使用している他のAI関連ツールが間接的にLiteLLMを含んでいる可能性は十分に考えられる。そのため、このライブラリにマルウェアが仕込まれたことは、AI開発に関わる広範囲のユーザーに影響を及ぼす非常に深刻な問題だった。

事件は2026年10月21日に発生した。Pythonのパッケージを公開する公式リポジトリであるPyPIに、悪意のあるコードが含まれたLiteLLMのバージョン1.107.0がアップロードされたのだ。この時、攻撃者は、それまで正常にリリースされていたバージョン1.107.0の先行版(rc1、rc2)の流れに乗るような形で、最終版としてこの不正なパッケージを公開したため、多くのユーザーが悪意に気づかずに「最新版にアップデートしよう」とインストールしてしまった可能性がある。幸い、PyPIはこのバージョンに悪意が含まれていることを発見し、迅速に削除する対応をとったため、現在は安全なバージョン1.106.2を利用することが推奨されている。

このマルウェアの厄介な点は、ただインストールされるだけでなく、システムに深く潜り込む仕組みを持っていたことだ。GitHub上のLiteLLMのリポジトリ自体はクリーンなままだったため、ソースコードを見ただけでは悪意を発見できなかった。マルウェアは、PyPIにアップロードされた「ホイール」と呼ばれるビルド済みのパッケージにのみ含まれていたのだ。インストールされると、Pythonが起動する際に自動的に読み込まれる特殊なファイル(.pthファイルやsitecustomize.py)をシステムに配置した。これにより、その環境でPythonが実行されるたびに、マルウェアのコードも一緒に実行されてしまう。データ窃盗は、これによって行われた主な目的の一つだ。マルウェアは、Claude、Cursor、Copilot、Gemini CLI、Codex CLIといったAIコーディングツールの認証情報をはじめ、多岐にわたる機密情報を狙った。具体的には、環境変数に設定されたAPIキー(ANTHROPIC_API_KEYやOPENAI_API_KEYなど)、.envファイルに書かれた情報、さらにはSSHの秘密鍵、クラウドサービスの認証情報、ブラウザに保存されたパスワード、シェルコマンドの履歴まで、非常に広範囲なデータを窃取しようとした。さらに、窃取したデータを外部に送信するだけでなく、1時間ごとにリモートのサーバーから別のコードをダウンロードして実行する「バックドア」としての機能も備えていた。これは、攻撃者がいつでもあなたのコンピュータを遠隔操作できる状態にする、非常に危険なものだった。

もしあなたがAI開発に関わっているなら、自分の環境がこのマルウェアに感染していないかを確認することが非常に重要だ。通常のpip show litellmコマンドだけでは、現在アクティブなPython環境の情報しか表示されないため、隠れた場所にインストールされたバージョンを見逃す可能性がある。より確実な方法として、以下のコマンドを試してみてほしい。まず、システム全体でlitellm-*.dist-infoという名前のフォルダを探す。このフォルダは、Pythonパッケージがインストールされた際に生成され、そのパッケージのバージョン情報を含んでいる。 find ~ -maxdepth 8 -type d -iname 'litellm-*.dist-info' 2>/dev/null このコマンドを実行して、出力結果にlitellm-1.107.0.dist-infoというフォルダが見つかった場合、その環境は感染している可能性が極めて高い。

次に、プロジェクトのロックファイルを確認する。ロックファイルとは、プロジェクトが使用するパッケージとその正確なバージョンを記録しておくファイルのことだ。もしプロジェクトのrequirements.txt、pyproject.toml、uv.lock、poetry.lockといったファイルにlitellm==1.107.0と明記されている場合、そのプロジェクトの環境を再構築した際に、悪意のあるバージョンがインストールされてしまう可能性がある。 grep -rIl -i 'litellm' --include='requirements*.txt' --include='pyproject.toml' --include='uv.lock' --include='poetry.lock' ~/code 2>/dev/null

最後に、マルウェアが残した痕跡がないか確認する。 ls -la /tmp/.pc_once_72129118c59f5636c0bb /tmp/remote_code_loader.lock 2>&1 ps aux | grep -E 'cook|remote_code_loader' | grep -v grep もしlsコマンドで一時ファイルが見つかった場合、データが既に送信された可能性がある。また、ps auxコマンドでcookやremote_code_loaderといった名前のプロセスが見つかった場合、バックドアが稼働していることを意味する。ただし、macOSでは再起動時に/tmpフォルダがクリアされるため、ファイルが見つからなかったとしても安全だと断定できるわけではない。上記のfindコマンドの結果と合わせて判断することが重要だ。

もしあなたの環境が感染していることが判明した場合、落ち着いて以下の手順を実行する必要がある。まず、感染した環境を特定し、マルウェアを完全に削除する。そして最も重要なのは、盗まれた可能性のある全ての認証情報や秘密鍵を変更することだ。特にAI開発者にとって忘れがちなのは、各AIモデルプロバイダー(Anthropic、OpenAI、Google AI Studioなど)のAPIキーだ。これらのキーは、あなたのコンピュータから直接モデルにアクセスするための「鍵」であり、悪用されると高額な利用料が発生したり、あなたのデータが悪意のある目的で使用されたりする可能性がある。同様に、Claude CodeやCursor、CodexといったAIコーディングツールのログイン情報もすぐに変更し、もしLiteLLMプロキシを使用していた場合は、そこに保存されていたプロバイダーキーも全て再発行する必要がある。その他、.envファイルに記載された情報、GitHubやパッケージレジストリのトークン、SSHキー、クラウドサービスの認証情報など、あらゆる機密情報を変更することが必須だ。念のため、各プロバイダーの利用状況ページを確認し、10月21日以降に身に覚えのない利用がないかチェックするのも良いだろう。

今回の事件から得られる最大の教訓の一つは、「最新版が常に安全とは限らない」ということだ。悪意のあるLiteLLM 1.107.0は、公開されてから1日も経たないうちにPyPIから削除された。もしあなたがパッケージインストーラーに対し、「公開されてからまだ数日しか経っていない新しいリリースはインストールしない」という設定をしておけば、このマルウェアの脅威を自動的に回避できたはずだ。現在、Pythonの主要なパッケージインストーラーであるuvとpipには、このような設定を導入するための機能が提供されている。uvを使う場合、pyproject.tomlファイルに以下の設定を追加できる。 [tool.uv] exclude-newer = "3 days" これにより、uvは公開から3日未満のパッケージのインストールを避けるようになる。 pipの場合、--uploaded-prior-toオプションを使用する。 pip install --uploaded-prior-to P3D litellm または、環境変数として設定することも可能だ。 export PIP_UPLOADED_PRIOR_TO=P3D この設定を導入することで、万が一悪意のあるパッケージが公開されたとしても、それが発見され、削除されるまでの間に誤ってインストールしてしまうリスクを大幅に減らせる。ただし、緊急のセキュリティパッチなど、すぐに適用する必要があるアップデートも一時的にブロックされてしまうという側面もある。uvではexclude-newer-packageというオプションで特定のパッケージのみこの遅延を適用しない設定も可能であり、pipでは環境変数を一時的に解除することで対応できる。意図的に遅延をスキップする行動を記録に残すことで、セキュリティ意識の向上にも繋がるだろう。

LiteLLM 1.107.0の事件は、ソフトウェアサプライチェーン攻撃と呼ばれる、ソフトウェアの供給経路を狙ったサイバー攻撃の典型的な例だ。開発者は、信頼できるソースからのパッケージであっても、常に慎重に扱う必要があることを改めて認識させられた。システムエンジニアを目指す皆さんにとって、このような実例は、セキュリティ対策が単なる専門家の仕事ではなく、日々の開発業務に不可欠な要素であることを示している。今回のような事件に遭遇しないためにも、使用するパッケージのバージョン管理を徹底し、今回紹介したような感染チェックや、新しいリリースをすぐにインストールしないという予防策を講じることが、これからの開発者には強く求められる。常にセキュリティ意識を持ち、安全な開発を心がけることが、あなた自身とプロジェクトを守ることに繋がるだろう。

関連コンテンツ

関連IT用語

関連ITニュース