2 ポイント 投稿者 GN⁺ 2026-03-25 | 1件のコメント | WhatsAppで共有
  • 広く使われているLLM統合ライブラリ LiteLLM のPyPIパッケージ2バージョン(1.82.7、1.82.8)に 悪意あるペイロードが挿入 されて配布され、インストール時にシステム認証情報を窃取する攻撃が発生
  • 攻撃原因はCI/CDセキュリティスキャンツール Trivyのサプライチェーン侵害 に端を発し、CircleCI認証情報が流出してPyPI公開トークンとGitHub PATが窃取されたことにある
  • 公式LiteLLM Proxy Dockerイメージ 利用者は requirements.txt でバージョン固定されていたため影響を受けなかったが、PyPIから直接 pip install した環境は直ちに点検が必要
  • GitHubのIssueスレッドには数百件の ボットによるスパムコメント が殺到し、実質的な議論を妨害しており、これは攻撃者が意図的に対応コミュニケーションを攪乱したものと確認
  • DSPy、CrewAI などLiteLLMを依存関係に持つ多数のプロジェクトにも波及影響があり、ソフトウェア サプライチェーンセキュリティの根本的脆弱性 を改めて浮き彫りにした

事件概要と発見の経緯

  • 新規プロジェクトの設定中にシステムが異常動作し、RAMが枯渇 してフォークボムのようなプロセスが実行された
  • 調査の結果、proxy_server.pybase64でエンコードされた悪意あるブロブ が追加されており、これをデコードして別ファイルを生成した後に実行する構造だった
  • 1.82.7バージョンは litellm/proxy/proxy_server.py にペイロードが含まれ、import litellm.proxy 時に実行 された
  • 1.82.8バージョンは追加で litellm_init.pth ファイルを含み、パッケージがインストールされているだけでPython起動時に 自動的にマルウェアが実行 された
    • .pth ファイルはPythonの site モジュールが起動時に自動実行する仕組みで、import キーワードの後に任意コードを実行できる
    • この仕組みはPython 2.1から 存在し、別途PEPなしで導入された
  • FutureSearchチームが最初の被害を報告: uvxが自動で最新の litellm(バージョン未固定)をインストール した後、CursorがローカルMCPサーバーを自動ロードして感染が発生

攻撃経路とTeamPCPとの関連

  • 攻撃は最近Trivyを侵害した TeamPCP グループと同一の攻撃者によるものと確認
  • 侵害経路: Trivyのハッキング → CircleCI認証情報の全面流出 → PyPI公開トークン + GitHub PAT窃取 → 悪性パッケージ配布
  • LiteLLMのCEO/CTOの GitHubアカウントも完全に乗っ取られ、個人リポジトリの説明がすべて "teampcp owns BerriAI" に変更され、Issueが閉じられるなどの行為が発生
  • PYPI_PUBLISHトークンがGitHubプロジェクトの 環境変数として保存 されており、これがTrivy経由で流出した
    • アカウントには 2FAが設定 されていたが、トークン自体が窃取されて回避された
  • 攻撃者はGitHub Issueに数百の ボットアカウント で同一文言を繰り返し投稿し、実質的な議論を妨害
    • Trivyリポジトリでも同様のパターンで 700件以上のスパムコメント が確認された
    • スパムアカウントの一部は実際に貢献履歴のあるGitHubユーザーで、2月以降 "Update workflow configuration" コミットにより CIワークフローへ認証情報窃取器を挿入 した履歴が確認された
  • Trivy侵害は 少なくとも5日前 に発生しており、最新の攻撃告知が前日に出たため、メンテナーが認識しないまま被害が発生した可能性がある
  • 攻撃者は Internet Computer Protocol(ICP)Canisters もペイロード配信に利用しており、DNS遮断だけでは防御できない

悪性ペイロードの動作方式

  • バックグラウンドのPythonプロセスを生成し、内蔵されたステージをデコードして実行
  • 認証情報収集器 が実行され、データ収集に成功すると攻撃者のRSA公開鍵でAES鍵を暗号化し、窃取データを リモートホストへ送信 する
  • マルウェア内で見つかったURL: checkmarx.zone/rawmodels.litellm.cloud
  • 主に ~/.git-credentials のSSH鍵と暗号資産ウォレット情報 を窃取対象としていた
  • CPU集約的な処理のためシステムに過負荷がかかり、かえって発見しやすくなっており、ファンの騒音で異常に気づいた事例も報告された
  • Harborのインストール時にも同じ症状が発生: grep -r rpcuser\rpcpassword プロセスがフォークボムのように実行され、暗号資産ウォレット探索 を試みた

LiteLLMチームの対応

  • 影響を受けたバージョン(v1.82.7、v1.82.8)は PyPIから削除 済み
  • すべてのメンテナーアカウントで パスワード変更、GitHub/Docker/CircleCI/pipの全キーを削除・交換
  • 新しいメンテナーアカウントは @krrish-berri-2@ishaan-berri に置き換え
  • PyPIではパッケージ全体が一時的に 隔離(quarantine) された後、感染バージョンの削除後に解除
  • すべての新規リリースを 停止 し、サプライチェーン全体のレビュー完了まで配布を凍結
  • Googleの Mandiant セキュリティチームと協力して調査と復旧を進行中
  • Trivyは最後の安全版である v0.35.0 に固定(当初の v0.69.3 固定からコミュニティのフィードバックを反映して変更)
  • 今後は Trusted Publishing(JWTトークンベースのOIDC) への移行、別個のPyPIアカウント利用などセキュリティ強化を検討
  • 悪性バージョンの 最初の公開時刻はおよそUTC 8:30、PyPI隔離処理はおよそ UTC 11:25 だった

影響範囲とダウンストリームプロジェクト

  • LiteLLMは DSPy の唯一のLLMプロバイダー呼び出しライブラリであり、CrewAI でもフォールバックとして使われている
  • Airflow、Dagster、Unsloth.ai、Polar、nanobot などもLiteLLMに依存
  • GitHub検索ベースで、requirements.txt にLiteLLMを バージョン未固定で含む プロジェクトが628件以上確認された
  • 公式Proxy Docker配布経路の利用者は requirements.txt で バージョン固定 されていたため影響なし
  • Docker配布では、ホストファイルシステムと環境変数へのアクセスが制限されているため相対的に安全だが、マウントされた認証情報は依然として危険
    • 攻撃者の主目的は 個人SSH鍵 であり、LLMキーへのアクセスは副次的
  • Harbor、browser-useなどLiteLLMを依存関係として自動インストールするツール利用者でも 間接被害 が報告された
  • CrewAIは litellm を 1.82.6(最後の安全版)に固定 したが、コミットメッセージに侵害への言及はない
  • DSPyは 公開Issueを作成 して対応中
  • LangChainは独自のLLMプロバイダー呼び出しレイヤーを持つため 今回のサプライチェーン侵害の直接的影響はない(任意の langchain-litellm パッケージ利用時を除く)

コミュニティの議論: サプライチェーンセキュリティとサンドボックス化

  • 依存関係と開発環境は もはや信頼できず、VM分離 + コンテナプリミティブ + 許可リスト + egressフィルタ + seccomp + gVisor などの 多層防御(defense in depth) が必要
  • 過去50年間の セキュリティ上の便宜主義が揺り戻し を迎えており、セキュリティモデル全体の再設計が必要
  • プログラミング言語レベル でモジュールごとのサンドボックス化が必要という意見
    • Javaには1990年代の v1.2 からこの機能があったが、使い勝手の問題で廃止された
    • Capabilityベース言語 を開発すべき時期だという意見
    • Cloudflareの workerd ランタイムがモジュール分離可能な既存ソリューションとして言及された
  • OpenBSDの pledge/unveil、Linuxの chroot/namespace/cgroup、FreeBSDの Capsicum など、OSレベルの分離ツールはすでに存在する
  • Guixは 数秒で隔離コンテナ を生成でき、$HOME にアクセスせず依存関係をインストール可能
  • Firejail と bwrap などユーザー空間分離ツールの積極活用が必要
  • モバイルアプリの サンドボックス + 権限モデル(Intents) はすでに存在するが、デスクトップ環境では一般的な計算制限への反発が強い
    • これに対し、Apple/Meta などの アプリストアの閉鎖性とセキュリティサンドボックスは別問題 であり、ユーザーに制御権を与えつつ安全性を確保するツール構築は可能だとの意見
  • macOS向け canary/honeypotツール 公開(github.com/dweinstein/canary): 偽のシークレットをWebDAV/NFSにマウントして異常アクセスを検知
  • パッケージ公開とパブリックリポジトリの間に壁を設けるべき という意見: パブリックリポジトリを直接Trusted Publisherに設定すると攻撃面が広がる
    • 反論として、Trusted Publishingの本来の目的は ソースと公開アーティファクトの監査可能なつながり を提供することであり、プライベートリポジトリ経由は後退だとする見解もある

実務的なセキュリティ勧告

  • 依存関係は SHA256チェックサム付きでバージョン固定 が必須
  • 内部 パッケージミラー を運用し、最新バージョンの直接利用を防ぐ
  • ビルドアーティファクト を使い、uv run などによる配布時のその場インストールに依存しないこと
    • PyPI障害時にシステムが停止する構造的リスクも排除できる
    • 配布可能なアーティファクトの利点: 監査可能性、迅速なロールバック、送信先ネットワークの危険なエンドポイント遮断が可能
  • uvの exclude-newer 設定により 一定期間以内の新規パッケージを除外 できる
    • pyproject.toml に [tool.uv] exclude-newer = "5 days" を設定可能
  • CI/CDで公開トークンは OIDCベースのワークフロー に移行し、トークン自体をなくすことが根本的解決
    • GitHubとPyPIはいずれもOIDCをサポートしており、公開作業にだけOIDCエンドポイントへのアクセス権を付与すれば、Trivy作業で窃取されるトークン自体が存在しない
  • Trivyなどのセキュリティスキャンツールは 公開権限のない別ワーカー で実行すべき
  • lockfile管理 と週次更新で最新バージョンの即時採用を避ける
  • Pythonの .pth ファイルは 自動コード実行 が可能であり、-S オプションで site import を抑制できるが互換性問題がある
  • osv-scanner などを用いた プロジェクト全体の依存関係スキャン を推奨
  • 感染有無の確認コマンド:
    • find / -name "litellm_init.pth" -type f 2>/dev/null
    • find / -path '*/litellm-1.82.*.dist-info/METADATA' -exec grep -l 'Version: 1.82.[78]' {} \; 2>/dev/null
  • パッケージマネージャー生態系全体での 認証情報一斉ローテーション(credential rotation) の必要性も提起された

SOC2監査と信頼性の問題

  • LiteLLMのSOC2監査業者が最近物議を醸した Delve だった点が指摘された
  • SOC2は「文書化されたプロセスに実際に従っているか」を確認するものであり、セキュリティ水準そのものを保証するものではない
  • 適切なSOC2であっても今回のサプライチェーン攻撃を防げたかは不確実

LiteLLM代替プロジェクト

  • Bifrost (github.com/maximhq/bifrost): Rustベースの代替、無料オープンソースインスタンスでも仮想キー設定が可能
  • Portkey (portkey.ai): プロキシサービス、無料プランあり、LiteLLMより高速との評価
  • pydantic-ai: Pythonベースの代替
  • any-llm (github.com/mozilla-ai/any-llm): Mozillaのプロジェクト
  • LLM Gateway (llmgateway.io): LiteLLM向け移行ガイドを提供
  • InferXgate (github.com/jasmedia/InferXgate): 新規プロジェクト、対応プロバイダーは限定的
  • 一部開発者は、LLMプロバイダーAPIは実質的に OpenAIとAnthropicの2種類 しかないため、直接 requests.post() で呼ぶほうが安全だという立場
    • 反論として、AnthropicのOpenAI互換APIは 長期的・本番向けソリューションとしては推奨されず、ベンダーごとのネイティブAPIにはOpenAI APIへマッピングされない固有機能が存在する

1件のコメント

 
GN⁺ 2026-03-25
Hacker Newsの意見
  • LiteLLMのメンテナーです。現状はまだ調査中ですが、ここまでに把握している内容は次のとおりです

    1. 問題はCI/CDで使われていたtrivyに起因するようです(関連検索リンク分析記事
    2. proxy dockerを使用している場合は影響ありません。requirements.txtでバージョンを固定していたためです
    3. PyPIで該当パッケージは隔離措置が取られ、ダウンロードがブロックされています
      現在、原因分析とセキュリティ強化策を検討中であり、ご不便をおかけして申し訳ありません
    • 影響を受けたバージョン(v1.82.7、v1.82.8)はPyPIから削除しました。すべてのメンテナーアカウントとキー(GitHub、Docker、CircleCI、pip)を交換しました。引き続きプロジェクト全体をスキャンしており、セキュリティ専門家の支援を歓迎します(連絡先: krrish@berri.ai)
    • 誰かが、私個人のGitHubアカウントも侵害されたようだと言っていました。検索結果に関連する痕跡が見えるとのことです
    • 「申し訳ない」という私の表現が人間味があったと言ってくれてありがとう。定型的な謝罪文より、誠意のこもった対応のほうがよいというフィードバックに励まされます
    • なぜ認証情報のローテーションが即座に行われなかったのかという質問がありました。短時間のうちに認識できなかった理由を説明する必要がありそうです
    • 誰かが、自分のシステムにインストールされたlitellmのバージョンを見つける簡単なスクリプトを作って共有しました(スクリプトリンク)。完璧ではないものの、conda、.venv、uv、システム環境をすばやくスキャンできるそうです
  • 私たちは依然として依存関係と開発環境を信頼できません。dev containerは隔離が不十分で、使い勝手もよくありません。今こそsandboxベースの開発環境へ移行すべきです。VMレベルの隔離、egressフィルタ、seccomp、gVisorのような防御層を備えた環境が必要です。そうした環境なら、侵害が発生してもコンテナはすぐ終了し、問題を容易に特定できます

    • この50年間のセキュリティの近道習慣が、結局はブーメランのように返ってきた気がします。いまや信頼ベースの開発文化は終わりに向かっています。単なるサンドボックス化を超えて、セキュリティモデル自体の再設計が必要です
    • もはや「昔のように」という言い方は通用しません。暗号学的に検証可能な安全性が必須です。Red HatのDISA STIGのように、外部リポジトリの利用を禁じる方向へ進むべきです
    • 認証情報をコンテナから分離する自分のプロジェクトについて意見を求めています(tightbeamairlock
    • 私はsmolvmというオープンソースプロジェクトを開発中です(リンク)。VMレベルの隔離とコンテナ対応を組み合わせた技術で、完全な仮想マシン単位のデプロイを目指しています。一緒に協力してくれる人を探しています
    • 最近のサプライチェーン攻撃の中で、dev containerからの脱出が実際に起きた例があるのか気になるという質問が出ていました
  • macOS向けに作ったcanaryツールの紹介です(リンク)。パッケージがアクセスしてはいけないファイルを検知するシンプルなGoバイナリです。WebDAVやNFSで偽の秘密情報を公開し、アクセス時に通知を送ります。honeypotアプローチで異常な挙動を検出できます

  • ここ数週間のTeamPCPの活動に関連する事件です。私がまとめたタイムラインが役立つと思います

    • 素晴らしいまとめだというフィードバックがありました。ただし、「プレイリスト」が印象的だったという冗談もありました
    • TeamPCPという名前はあちこちで見ていたが、こうして一目で整理されたものは初めてだという反応がありました
    • これほど素早くアップデートを維持する方法が気になるという質問もありました
  • GitHubのスパム検知システムが弱すぎるという指摘がありました。litellmのissueに170件以上のスパムコメントが付いたそうです

    • 数日前にはtrivyリポジトリでも同じことがありました。ハッキング関連の議論が閉じられると、700件以上のスパムコメントが付きました。一部は実際の活動履歴があるアカウントでした。認証情報窃取型の攻撃が広範囲に広がっているようです。複数のアカウントで、2月に「Update workflow configuration」というコミットによりCIにcredential stealerが仕込まれた痕跡があります
    • GitHubでスパムを報告するには複数の手順を踏む必要があり、非効率だという不満もありました
    • 一部は単なるボットアカウントの可能性もあると言及されていました
  • こういうことはいつか起きると予想していました。依存関係のバージョン固定で防ごうとしてきましたが、それでも完全ではありません。オープンソースのサプライチェーンの複雑さのため、すべてのコードを検証するのは不可能です。LLMのおかげで悪意あるコードが大量に拡散するリスクは100倍になりました

    • Rustエコシステムは依存関係ツリーが深すぎて検証が難しいという意見がありました。Rust、Node、Pythonはいずれも似た問題を抱えています。一方でC/C++はシステムパッケージマネージャを使うため、依存関係追加のコストが高く、相対的に安全です
  • もしAIが書いたコードがLLVMやLinuxに入り込んだら、私たちは本当の意味で「trusting trust」問題に直面することになります

    • 「Trusting Trust」問題については、すでにDiverse Double-Compilingという手法で解決策が示されています。しかし、サプライチェーン攻撃は依然として難しい課題です。AIは単に攻撃の規模を拡大する道具にすぎません
    • いまや何もかも不安です。airgap環境だけが安全なのかもしれません。しかし、ほとんどのデータはクラウド上にあり、そのバックアップすら私たちは制御できません
    • 決定的ビルドチェーンによって完全に検証可能なソフトウェアを作る試みが進んでいます。Debianの93%のパッケージは再現可能ビルドです。それでもなお、多くの開発者は平然とcurl | bashを実行します。XZバックドア事件は、こうした現実を思い出させる事例でした
    • LLMがカーネルコードを学習できないようにする唯一の防御策は、内部APIを頻繁に変更することだという意見もありました
    • もしこうした攻撃が現実になれば、政府サーバーやクラウドインフラが大規模な被害を受ける可能性があります。特に国家レベルのハッキングと結びつけば、被害規模は数兆ドルに達しかねません。それでもLinuxは相対的に安全だと思います
  • LiteLLMのSOC2監査機関がDelveだったことが言及されていました。

    • しかし、SOC2認証でこうした攻撃を防げたかどうかは疑問です。実際、SOC2は完全な盾にはならないという経験談も共有されていました
  • Harborをインストールしたところ、CPUが100%まで跳ね上がってシステムが止まりました。grep -r rpcuser\rpcpasswordプロセスが暗号通貨ウォレット探索を試みたようです。幸い、バックドアはインストールされませんでした

    • browser-useでも同じ経験をしたという人がいました。litellmが依存関係としてインストールされ、システムが停止したそうです。GitHubとHuggingFaceのトークンを無効化したものの、OSの再インストールが必要か尋ねていました
    • 「どうやってそんなに早くプロセスを確認できたのか」という質問がありました。Activity Monitorを常に開いているのか気になるとのことです
    • 「Harnessとは何か」という質問も出ていました
  • 今回の事件は、TrivyをハッキングしたTeamPCPと同じ攻撃グループの犯行のようです。issueにボットコメントがあふれているのも同じパターンです。LLMを活用した自動化攻撃である可能性が高いです

    • 攻撃者がなぜボットコメントでissueを埋め尽くすのか気になるという質問がありました。おそらく混乱の誘発と対応の遅延が目的だと思われます