2026年3月にAIプロキシOSS「LiteLLM」がPyPIで侵害された事件は、当時「配布パッケージにマルウェアが混入した」と報じられた。だがそれは氷山の一角だった。8月に入り、TeamPCPと名乗る攻撃グループによる一連のサプライチェーン攻撃の被害規模が実測として公表され、CloudSEKは「434,000のCI/CDパイプライン・2,500組織超」の潜在暴露を報告、FBIも窃取された認証情報の長期悪用を警告している。

本記事は、当サイトが3月に速報したLiteLLM 1.82.7/1.82.8がPyPIで侵害 — サプライチェーン攻撃で緊急アップデート推奨続報として、①被害規模の実測と「なぜ数値が出典で割れるのか」、②連鎖(カスケード)の時系列、③IOC、④後続のCVE波、⑤実際に動かして検証した自システム確認コマンドを、一次ソース(GitHub Advisory・Datadog・CloudSEK・PyPI)に絞って整理する。セキュリティ全般の地図はサプライチェーンセキュリティ2026|攻撃手法・防御ツール・実践チェックリストを参照してほしい。

TeamPCPカスケードの流れ。Trivy侵害→Checkmarx/OpenVSX→LiteLLM(PyPI 1.82.7/1.82.8)→Telnyx SDKへ連鎖し、CloudSEKは434,000 CI/CDパイプライン・2,500組織の潜在暴露を報告、FBIが7/2に長期悪用を警告
TeamPCPの連鎖:1つの侵害で得た資格情報が次の侵害に使われ、開発ツール群へ波及した(出典: Datadog Security Labs・CloudSEK・FBI FLASH-20260702-01 を基に作図。数値は潜在暴露の推計)。
30秒でわかる TeamPCP × LiteLLM 続報(2026年8月時点)
  • 正体:Trivyから連鎖したサプライチェーン攻撃キャンペーン(Google追跡名 UNC6780)。LiteLLMはその一環でPyPI侵害。
  • 被害規模:CloudSEK「434,000 CI/CDパイプライン・2,500組織超」、Hudson Rock「153GB・433,909ファイル・2,488法人ドメイン」。いずれも“潜在暴露の推計”で確認侵害数ではない。
  • IOClitellm_init.pth(uninstall後も残る)・sysmon.service(systemdバックドア)・C2 models.litellm.cloud 等。
  • 後続CVE:4月に別系統の CVE-2026-42208(事前認証SQLi)。CISA KEV入り、公開後1〜2日で実悪用。
  • 今やること:汚染版(1.82.7/1.82.8)を排除し安全版へ、IOC点検、資格情報の全ローテーション(FBIが長期悪用を警告)。

TeamPCPとLiteLLM事件——いま分かっている被害全貌

3月の初報時点で分かっていたのは「LiteLLMの1.82.7と1.82.8がPyPIで侵害され、認証情報を盗む」ことだった。8月までに明らかになったのは、それが単発の事件ではなく、Trivyを起点に開発ツール群へ連鎖したTeamPCPキャンペーンの一部だったこと、そして被害の潜在規模が数十万CI/CDパイプライン級だったことだ。

そもそもなぜLiteLLMのようなAIプロキシが標的になったのか。LiteLLMは複数のLLMプロバイダを束ねる「AIゲートウェイ」として、多数の組織で各社のAPIキーやクラウド資格情報が集まる結節点になっている。攻撃者から見れば、1つのライブラリを汚染するだけで、それを使う全組織の「AI関連の鍵束」に手が届く——投資対効果が極めて高い標的だ。近年、AIインフラ(プロキシ・ゲートウェイ・エージェント実行基盤)が戦略的なサプライチェーン標的になりつつあるのは、まさにこの「鍵が集まる場所」という性質による。LiteLLM事件は、AIスタックの利便性の裏で、資格情報の集中がそのまま攻撃価値の集中になっていることを可視化した事例でもある。

攻撃の入口は皮肉なものだった。TeamPCPはまずセキュリティスキャナ Trivy を侵害し(CVE-2026-33634)、汚染されたTrivyが各所のCI/CDランナー環境で正当な読み取り権限を持って動いたことで、LiteLLM自身のCI/CDパイプラインからPyPIパブリッシュ用トークンが盗まれた。盗まれたトークンで悪意ある 1.82.7 / 1.82.8 がPyPIに公開された——つまり「防御ツールが侵害の踏み台になった」構図だ。

この構図が示す教訓は重い。多くの組織はCIに脆弱性スキャナやSBOM生成ツールを「安全のために」組み込むが、それらはリポジトリのソース・環境変数・クラウド資格情報に広い読み取り権限を持って動く。そのツール自体が汚染されれば、権限はそのまま攻撃者のものになる。TeamPCPはこの「信頼された自動化」の連鎖を突き、Trivy→Checkmarx→LiteLLM→Telnyxと、1つの資格情報窃取を次の侵害の足がかりに変えていった。防御の自動化が増えるほど、その自動化自身が新たな攻撃面になる——というのが今回の中核的な学びだ。

今回の続報の核心は「被害規模の数値」だが、その数値は出典で割れており、しかも“確認された侵害”ではなく“潜在的な暴露の推計”である。ここを取り違えないことが最も重要だ。

時系列(タイムライン):Trivyから連鎖したサプライチェーン攻撃

TeamPCPの動きは1つの侵害が次を呼ぶ「カスケード」だった。この litellm サプライチェーン侵害を単独の点で見ると規模を見誤る——起点のTrivyから終点のTelnyx SDKまでを1本のタイムラインで追うと、なぜ被害が数十万CI/CD級に膨らんだのかが見えてくる。主要な出来事を時系列で並べる(日付は各社レポートおよびPyPI実データに基づく)。

日付(2026年) 出来事
3月19日 TeamPCPが Trivy(trivy-action等)を侵害、悪意ある v0.69.4 を公開(CVE-2026-33634・CVSS9.4)
3月20〜22日 npmワームが各パブリッシャに拡散、Kubernetes狙いのスクリプト展開
3月23日 Checkmarx(KICS) と OpenVSX が侵害
3月24日 10:39 UTC litellm 1.82.7 をPyPIに公開、直後に 1.82.8。約40分でPyPIが隔離
3月24日 16:00 UTC頃 BerriAIがPyPIと連携し該当パッケージを削除、PyPI/GitHub/Docker資格情報をローテーション
3月25日 GHSA-5mg7-485q-xm76 公開(Critical)
3月27日 Telnyx Python SDK(4.87.1/4.87.2)が侵害
3月31日 litellm 1.83.0 公開(インシデント後の最初のクリーン版)
4月中旬〜19日 別系統の CVE-2026-42208(事前認証SQLi)公表、v1.83.7-stable で修正
5月8日 CVE-2026-42208 が CISA KEV に追加
7月2日 FBI FLASH(FLASH-20260702-01)、窃取資格情報の長期悪用を警告
8月(上旬〜中旬) CloudSEK / Hudson Rock が被害規模の実測を公表
flowchart LR T["Trivy 侵害
CVE-2026-33634"] --> K["Checkmarx(KICS)
OpenVSX"] T -.->|"CIから窃取した
資格情報を再利用"| L K --> L["LiteLLM PyPI
1.82.7 / 1.82.8"] L --> N["Telnyx SDK
4.87.1 / 4.87.2"] L --> C["資格情報を暗号化し
C2へ送信"]

PyPIの実データでも裏が取れる。クリーンな直前版 1.82.6 は3月22日にアップロードされ、汚染版 1.82.7 / 1.82.8 は現在PyPIから削除されて存在しない。復旧版 1.83.0 は3月31日にアップロードされている。

被害規模の実測と「数値が割れる」理由

ここが本続報の主役だ。被害規模の数値は出典ごとに違う。無理に1つへ丸めず、報告元ごとに併記する。

報告元 数値 何を数えているか
CloudSEK 434,000 CI/CDパイプライン/2,500組織超 露出したCI/CDパイプライン・潜在的に影響し得る企業数
Hudson Rock 153GB・433,909ファイル/118,829 CIランナーダンプ/2,488法人ドメイン 入手データセットの規模・帰属した法人ドメイン数
The Hacker News(8/12) 2,100組織超 より保守的な暴露組織数の見積り

3点、読み解く際の注意がある。

これは“確認された侵害”ではなく“潜在的な暴露の推計”:ダンプに資格情報が現れた≠その組織が侵害された、ではない。各社とも「露出した可能性」を数えている
数値は独立した実測ではない:多くの媒体が報じているが、元をたどると CloudSEK(434K/2,500)と Hudson Rock(153GB/2,488ドメイン)の2社に集約される。The Hacker Newsの「2,100組織超」はCloudSEKより低い
Hudson Rockの数値は自社サービスへの導線を伴う:被害照会サービスへ誘導する文脈で公表されている。数値自体はCloudSEKが独立に同規模(434K)を出しているため捏造ではないが、特定企業名の“暴露リスト”は「ダンプに登場した」という主張であって侵害の確認ではない

実務上は、この「潜在暴露」をどう自組織の判断に落とすかが問題になる。他社の集計値(434Kや2,500)は自社が影響を受けたかどうかの証拠にはならない——それらはあくまで攻撃の総量を示すマクロな指標だ。自組織の判断は、次節以降のIOC点検と「露出期間中に自社のCIランナーやリポジトリで汚染版に触れ得たか」という具体的な確認に基づいて行う。逆に言えば、数千組織という数字に萎縮するのでも楽観するのでもなく、自分の環境で1.82.7/1.82.8に触れる経路があったかを淡々と潰すのが正しい向き合い方だ。報道の大きな数字と、自組織のリスク評価は分けて扱う。

読者の3つの問いへの答え
何が起きた:Trivyから連鎖したTeamPCP攻撃の一部としてLiteLLMがPyPI侵害され、大量のCI/CD資格情報が露出した。
どれだけの規模:CloudSEK 434K CI/CD・2,500組織、Hudson Rock 2,488ドメイン——ただし“潜在暴露の推計”で出典により幅がある。
自分は何をする:汚染版排除・IOC点検・資格情報の全ローテーション(FBIが長期悪用を警告)。

3段構成のマルウェアとIOC

汚染版に仕込まれたコードは3段構成だった。特に 1.82.8 は litellm_init.pth を site-packages に置き、litellmをimportしなくても任意のPython実行で自動発火するため、1.82.7より危険度が高い。

①資格情報の収集:SSH秘密鍵・.env・AWS/GCP/Azure資格情報・.kube/configとKubernetesシークレット・DBパスワード・シェル履歴・暗号ウォレット等を走査。GHSAは「機微な資格情報とファイルを収集し、リモートAPIへ送信」と記述。送信は AES-256(データ)+RSA-4096(セッション鍵)で暗号化しHTTPS POST
②Kubernetes横展開:クラスタの各ノードへ特権Podを展開
③systemd永続化sysmon.service を仕込み、C2をポーリングして追加ペイロードを取得

送信データが暗号化されている点も検知を難しくしている。収集した資格情報はAES-256で暗号化し、そのセッション鍵をRSA-4096でさらに暗号化してHTTPS POSTで送るため、ネットワーク監視で「平文の秘密鍵が流れる」ような分かりやすい兆候は出ない。平文の窃取パターンではなく、下記のC2ドメインへの通信そのものを痕跡として探すのが現実的だ。また3段構成のうち③のsystemd永続化は、パッケージをアンインストールしても~/.config/systemd/user/に残るため、「litellmを消したから大丈夫」という思い込みが最も危険な穴になる。

主なIOC(Datadog Security Labsが確認、複数社が裏付け):

種別 指標
ファイル litellm_init.pth(site-packages)/~/.config/sysmon/sysmon.py~/.config/systemd/user/sysmon.service/tmp/pglog/tmp/.pg_state
サービス sysmon.service
C2 models.litellm.cloud(送信)/checkmarx.zone/raw(ペイロード取得・Checkmarxをタイポスクワット)/83.142.209.203:8080

なお同じキャンペーンで侵害された Telnyx SDK では、ペイロードを WAV音声ファイル(ringtone.wav)にステガノグラフィで隠す手口も確認されている(16バイトのフレームごとに8バイトのXOR暗号化データ+8バイト鍵)。C2ドメインが正規サービス名をタイポスクワットしている点(checkmarx.zone)と併せ、TeamPCPは検知回避に相応の手間をかけている。IOCは「怪しいファイル名」だけでなく、一見無害な拡張子・正規に似たドメインまで視野に入れて探す必要がある。

後続CVE波:CVE-2026-42208(事前認証SQLi・CISA KEV)

供給チェーン侵害とは別系統で、4月にLiteLLMプロキシ本体の脆弱性も相次いで公表された。最重要は CVE-2026-42208——事前認証(valid APIキー不要)のSQLインジェクションで、プロキシのDBを改変され得る。NVDはCVSSを9.8とする(一部集計では9.3と表記)。公開から1〜2日(約26〜36時間)で実環境での悪用が観測され、5月8日にCISA KEVへ追加された。影響は v1.81.16〜v1.83.6、修正は v1.83.7-stable、LiteLLMは v1.83.10-stable 以降を推奨する。公開から実悪用まで1〜2日という速さは、「パッチが出てから週末をまたいで適用しよう」という悠長な運用では間に合わないことを意味する。CISA KEV入りは連邦政府機関に期限付き対応を課すが、民間でもインターネットに露出したLiteLLMプロキシは最優先で更新すべき対象だと考えたほうがよい。事前認証で悪用可能=攻撃にvalid APIキーが要らないため、認証を掛けていても油断できない。

このほか、4月のハードニング告知で CVE-2026-35029(/config/update 悪用による権限昇格→RCEの恐れ)・CVE-2026-35030(enable_jwt_auth 有効時のみの認証バイパス。既定オフ)・GHSA-69x8-hrgq-fjj8(無塩SHA-256パスワードハッシュ/要APIキー)が開示された。「3月のパッケージ汚染は直したから安心」ではなく、プロキシ本体も新しい安定版へ上げる必要がある。

影響範囲:誰が・どのバージョンが対象か

影響を受ける条件は「供給チェーン侵害」と「プロキシ本体のCVE」で別なので、影響範囲を分けて整理する。

事象 影響を受けるバージョン/条件 安全な状態
供給チェーン侵害(GHSA-5mg7-485q-xm76) 1.82.7 / 1.82.8 を一度でも導入した環境 1.82.6 または 1.83.0 以降+IOC除去+資格情報ローテーション
CVE-2026-42208(事前認証SQLi・CISA KEV) v1.81.16〜v1.83.6(APIキー不要で悪用可) v1.83.7-stable 以降(推奨 v1.83.10-stable 以降)
CVE-2026-35030(認証バイパス) enable_jwt_auth を明示的に有効化した環境のみ(既定オフ) v1.83.0 以降
CVE-2026-35029 / GHSA-69x8 プロキシ稼働環境(後者は要valid APIキー) v1.83.0 以降

回避不能な条件として、1.82.8を入れた環境は litellm を import していなくても litellm_init.pth 経由でコードが発火済みの可能性がある点に注意する。バージョンを上げるだけでは.pthは残るため、後述のIOC除去とセットで対応する。

TeamPCP被害の自システム確認コマンド(実測済み)

以下は当環境で実際に実行し、構文と挙動を確認したコマンドだ。進行中のサプライチェーン事案では「載せて終わり」にせず動かして精度を確かめる方針に従っている。攻撃者が仕込むファイルパスでの探索を主軸に、まず未fetchブランチの取りこぼしを防ぐ。

# 0) 供給チェーン確認の先頭に置く(未fetchのリモートブランチを対象に含める)
git fetch --all --prune

# 1) 稼働環境に汚染版が入っていないか
pip show litellm 2>/dev/null | grep -i version
pip freeze | grep -i litellm

# 2) lockfile / requirements に汚染版が固定されていないか(全ブランチ横断)
grep -rnE "litellm==1\.82\.(7|8)" . --include=requirements*.txt \
  --include=poetry.lock --include=uv.lock --include=Pipfile.lock

次に、uninstallでは消えない永続化IOCとバックドアを点検する。litellm_init.pth はアンインストール後も残るため、バージョンを上げただけでは不十分だ。

# 3) 永続化 .pth(どのPython実行でも自動発火する)
find / -name 'litellm_init.pth' 2>/dev/null

# 4) systemd バックドアと状態ファイル
systemctl --user status sysmon.service 2>/dev/null
ls -la ~/.config/sysmon/sysmon.py ~/.config/systemd/user/sysmon.service \
       /tmp/pglog /tmp/.pg_state 2>/dev/null

# 5) C2への通信痕跡(DNS/プロキシログを検索)
grep -REi "models\.litellm\.cloud|checkmarx\.zone|83\.142\.209\.203" \
  /var/log 2>/dev/null

いずれか1つでも該当したら、その環境でlitellmが参照できた全ての資格情報は窃取済みと仮定し、次節の恒久対策へ進む。何も出なければ(当記事の検証環境ではlitellm未導入・IOCなしを確認)直接被害の可能性は低いが、CI/CDランナー側の点検は別途必要だ。

CI/CDランナーの点検が特に重要なのは、今回の窃取の主戦場が開発者のローカルPCではなくエフェメラルなCIランナーだったからだ。ランナーは実行のたびに使い捨てられるため、侵害の痕跡(IOCファイルやプロセス)が残りにくい一方、実行中は環境変数やOIDCトークン、クラウドの一時資格情報を潤沢に持つ。したがって「ローカルにIOCが無い=安全」とは言えない。ランナーで過去に汚染版をpip installし得たか(キャッシュ・lockfile・ビルドログ)を洗い、疑わしければそのランナーが握っていた資格情報を期間ごとローテーションする。恒久対策としては、依存のハッシュピン留めpip install --require-hashes)で「同じバージョン名でも中身が変わる」差し替えを検知し、Socketやpip-auditのような供給チェーン監視を導入して、パブリッシュ直後の悪性バージョンを自動で弾く体制にしておくとよい。

FBI警告:資格情報の長期悪用に備える
FBIは7月2日のFLASH(FLASH-20260702-01)で、TeamPCPが窃取した資格情報は初回侵害から時間が経ってから武器化され得ると警告しました。露出期間中にアクセス可能だったCI/CDシークレット・PyPI/npmパブリッシュ用トークン・クラウド資格情報・Kubernetesシークレット・Vaultトークンを、被害有無にかかわらずローテーションしてください。バージョン更新だけで“終わり”にしないことが肝心です。

ローテーションは優先順位をつけて進めると現実的だ。まず「一度露出したら被害が連鎖しやすい」もの——パブリッシュ用トークン(PyPI/npm)、クラウドのルート/管理者級キー、CI/CDのOIDC・長命トークン、Kubernetesの管理者資格情報——を最優先で無効化・再発行する。次にAIプロバイダのAPIキー、DBパスワード、Dockerレジストリトークンを回す。単純な失効だけでなく、失効前に発行されたセッションやリフレッシュトークンが生きていないかも確認する。TeamPCPのように「盗んだ鍵で次を侵害する」相手には、取りこぼした1本の鍵が再侵入の入口になるため、ローテーションは「全部・同時に」が原則だ。

まとめ

LiteLLMの3月PyPI侵害は、Trivyから連鎖したTeamPCPキャンペーン(Google追跡名 UNC6780)の一部であり、8月に公表された被害の潜在規模はCloudSEKで434,000 CI/CDパイプライン・2,500組織超に及ぶ。ただしこの数値は“潜在暴露の推計”で出典により幅があり、確認された侵害数ではない——ここを分けて読むのが本続報の要点だ。やるべきことは明確で、①汚染版(1.82.7/1.82.8)を排除し安全版(1.82.6 か 1.83.0 以降、さらにCVE-2026-42208修正済みの v1.83.10-stable 以降)へ、②litellm_init.pthsysmon.service 等のIOCを点検、③FBIが長期悪用を警告した資格情報を全ローテーションする。初報はLiteLLM 1.82.7/1.82.8がPyPIで侵害開発者が分単位対応を公開した記録、同時期の連鎖事例はaxiosマルウェア混入事件も併せて参照してほしい。

参照ソース

GitHub Advisory GHSA-5mg7-485q-xm76 — 汚染版・3段マルウェア・安全版(1.82.6/1.83.0)・資格情報ローテーション指示の一次情報
Datadog Security Labs(TeamPCPキャンペーン解析) — IOC(ファイル・サービス名・C2)と検出クエリ
CloudSEK — 434,000 CI/CD pipelines / 2,500 companies — 被害規模の実測(潜在暴露の推計)
PyPI — litellm リリース履歴 — 1.82.6/1.83.0 の実在と汚染版の削除確認