本記事の情報は 2026年3月25日 06:00 JST(3月24日 21:00 UTC)時点のものである。
本インシデントは現在も進行中であり、今後新たな情報が判明する可能性がある。
最新の一次情報は Aqua Security公式ブログ および GitHub Discussion #10425 を参照されたい。本ブログの執筆にあたり参照したセキュリティ企業の分析レポート・ニュース記事へのリンクは、本記事末尾のセクション7(参考リンク)にまとめている。
3/22公開の第2レポートはこちらから確認できる。
2026年3月19日以降に、以下のいずれかを使用していないか?
aquasecurity/trivy-action をタグ参照で使用したaquasecurity/setup-trivy をタグ参照で使用したaquasec/trivy の v0.69.4, v0.69.5, v0.69.6, または latest タグを pull したCheckmarx/kics-github-action をタグ参照で使用したCheckmarx/ast-github-action をタグ参照で使用したcx-dev-assist v1.7.0 または ast-results v2.53.0 をインストールした@emilgroup/*, @opengov/*, @teale.io/eslint-config などの CanisterWorm 影響パッケージを使用したlitellm v1.82.7 または v1.82.8 をインストールした1つでも該当する場合は、本記事のセクション3(確認方法)とセクション4(対応アクション)を直ちに参照してください。
第2レポート(3月22日 14:00 UTC時点)以降も、攻撃者は活動を止めず、Trivy以外のエコシステムにも攻撃範囲を拡大した。以下の時系列は、各セキュリティ企業および公式ソースの公開情報に基づき構成したものである。二次情報の集約であるため、時刻や詳細に誤りが含まれる可能性がある。詳細な影響調査を行う場合は、必ず各行の「情報源」欄に記載された一次ソースを参照されたい。全て UTC で記載する。
| 日時 (UTC) | イベント | 情報源 |
|---|---|---|
| 3/22 ~16:00 | Docker Hubに悪意あるTrivy v0.69.5およびv0.69.6がプッシュされた。いずれも対応するGitHub Releaseは存在せず、GitHub Releaseパイプラインを迂回して直接プッシュされたものである | ramimac, Wiz |
| 3/22 21:31 | CanisterWormのC2として使用されていたICP Canister(tdtqy-oyaaa-aaaae-af2dq-cai)がポリシー違反でブロックされた |
Wiz, ramimac |
| 3/23 01:26 | Docker Hubからv0.69.5, v0.69.6が削除された(いずれも01:26 UTC) | Docker公式ブログ |
| 3/23 01:36 | Docker Hub上のExposure Windowの終了(latest タグの処理完了) |
Docker公式ブログ |
| 3/23 | CVE-2026-33634 が発行された(CVSS v4.0: 9.4 Critical)。スコア詳細はCVE情報を参照 | Tenable, GHSA-69fq-xp46-6x23 |
| 3/23 12:53 | Checkmarx の Open VSX拡張2件(cx-dev-assist v1.7.0, ast-results v2.53.0)に悪意あるバージョンが公開された | Checkmarx Security Update, Wiz |
| 3/23 12:58-16:50 | Checkmarx/kics-github-action の全35タグがハイジャックされた。約4時間のExposure Window | Checkmarx Security Update, Wiz |
| 3/23 22:25 | Checkmarx/ast-github-action の侵害がSysdigにより報告された(少なくともv2.3.28が悪意あるバージョン) | Sysdig |
| 3/24 05:43 | Aqua Security最新アップデート公開。修復作業の継続を表明 | Aqua Security公式ブログ |
| 3/24 10:39 | LiteLLM PyPI v1.82.7 がポイズニングされた | Endor Labs, Snyk |
| 3/24 10:52 | LiteLLM PyPI v1.82.8 がポイズニングされた。v1.82.7との違いは .pth ファイルの追加であり、import不要でPythonインタープリター起動時に自動実行される |
Endor Labs, Snyk |
| 3/24 11:48 | FutureSearch(Callum McMahon)がGitHub Issue #24512 を開設し、侵害を公開報告した | GitHub Issue #24512, Snyk |
| 3/24 ~13:38 | PyPIがLiteLLMの悪意あるバージョンを隔離した(Snykの推定による公開から約3時間後の逆算値であり、PyPI公式の記録に基づく時刻ではない) | Snyk |
影響を受けたバージョン・Exposure Windowの詳細はセクション2を参照。
| 対象 | 影響バージョン/タグ | 安全なバージョン | Exposure Window (UTC) |
|---|---|---|---|
| aquasecurity/trivy-action | 77タグ中76タグ(v0.0.1〜v0.34.2)がforce-push | v0.35.0(GitHubのImmutable Releases機能で保護) | 3/19 ~17:43 – 3/20 ~05:40(約12時間) |
| aquasecurity/setup-trivy | 全7タグ(v0.2.0〜v0.2.6)がforce-push | v0.2.6(安全なコミットで再作成後) | 3/19 ~17:43 – 3/19 ~21:44(約4時間) |
| Checkmarx/kics-github-action | 全35タグがハイジャック | SHA固定を推奨(3/23 12:58 UTC以前のコミット) | 3/23 12:58 – 16:50(約4時間) |
| Checkmarx/ast-github-action | 少なくともv2.3.28が侵害(他タグも侵害の可能性あり) | SHA固定を推奨 | 3/23(詳細時間は未確定) |
出典: trivy-action/setup-trivyについては GHSA-69fq-xp46-6x23 および Aqua Security公式ブログ。KICS/astについては Wiz、Sysdig、Checkmarx Security Update。
| 対象 | 影響バージョン | 安全なバージョン | Exposure Window (UTC) |
|---|---|---|---|
| Trivy GitHub Release | v0.69.4 | v0.69.2, v0.69.3 | 3/19 18:22 – 3/19 ~21:42(約3時間) |
Docker Hub aquasec/trivy |
v0.69.4, v0.69.5, v0.69.6, latest |
v0.69.3 | 3/19 18:24 – 3/23 01:36(約3日7時間) |
注意: Docker Hub上のv0.69.4は3/19 22:20 UTCに一度削除されたが、
latestタグは3/20 03:26 UTCに攻撃者が再び悪意あるコンテンツに紐付けた(Docker公式ブログ)。v0.69.5, v0.69.6は3/22に対応するGitHub Releaseなしで直接プッシュされたものである。
| 対象 | 概要 | Exposure Window |
|---|---|---|
| @emilgroup スコープの複数パッケージ | 最初の感染波(28パッケージ) | 3/20 20:45 UTC〜 |
| @opengov スコープの16パッケージ | 第2の感染スコープ | 3/20〜 |
| @teale.io/eslint-config v1.8.11, v1.8.12 | 完全自己増殖型に進化(findNpmTokens() 関数による自動伝播) |
3/20〜 |
| 合計: 66以上のユニークパッケージ、141の悪意あるアーティファクト | Socket追跡ページで最新リスト確認可能 | 継続中 |
CanisterWormは、窃取したnpmトークンを使って被害者が管理する他のパッケージにも自動的にマルウェアを拡散する「自己増殖型ワーム」である。ICP(Internet Computer Protocol)ブロックチェーン上のCanisterをC2として利用する点が特徴的である。
出典: Socket(141アーティファクト)、JFrog(追加検出あり)、The Hacker News。パッケージリストは Socket追跡ページ で確認可能。
| 対象 | 影響バージョン | 安全なバージョン | Exposure Window (UTC) |
|---|---|---|---|
| litellm | v1.82.7, v1.82.8 | v1.82.6 | 3/24 10:39 – ~13:38(約3時間) |
注意: LiteLLMは1日あたり約340万回ダウンロードされるパッケージであり、約3時間の曝露でも影響範囲は大きい(Snyk)。
出典: Endor Labs、Snyk、FutureSearch(発見者)。
| 対象 | 影響バージョン | 安全なバージョン | 備考 |
|---|---|---|---|
| cx-dev-assist | v1.7.0 | v1.10.0以上 | VS Code Marketplaceは影響なし。Open VSXのみ |
| ast-results | v2.53.0 | v2.56.0以上 | VS Code Marketplaceは影響なし。Open VSXのみ |
出典: Wiz、Checkmarx Security Update。安全なバージョンはCheckmarx公式で確認。
| CVE ID | CVSS v4.0 | CVSS v3.0 | CWE | ステータス |
|---|---|---|---|---|
| CVE-2026-33634 | 9.4 (Critical) | 9.8 (Critical)※ | CWE-506 (Embedded Malicious Code) | CISA KEV未登録(3/25 06:00 JST時点) |
※ CVSS v3.0: 9.8はTenableによる評価である。CNA(GitHub)はCVSS v4.0スコアのみを提供しており、NVDは3月25日06:00(JST)時点で「Awaiting Analysis」ステータスのままスコアを割り当てていない。
出典: Tenable、GHSA-69fq-xp46-6x23。CISA KEVカタログは3月25日06:00(JST)時点でCVE-2026-33634を含んでいない(CISA KEV)。
Step 1: ワークフローファイルの確認
リポジトリ内の .github/workflows/ ディレクトリで、以下のActionをタグ参照で使用していないか確認する。
SHAピンニング(例:@abcdef1234567890...)ではなくタグ参照(例:@latest,@0.69.4,@v2.1.7)を使っている場合は影響の可能性がある。
Step 2: Exposure Window中の実行確認
ワークフローがExposure Window中に実行されたかどうかを確認する。
Step 3: 窃取データリポジトリの確認
攻撃のフォールバック窃取メカニズムが発動していた場合、GitHub組織内に tpcp-docs または docs-tpcp という名前のリポジトリが作成されている可能性がある。
出典: CrowdStrike、Wiz。
以下のダイジェストに一致する場合は侵害されている(GHSA-69fq-xp46-6x23):
| タグ | ダイジェスト |
|---|---|
| 0.69.4 | sha256:27f446230c60bbf0b70e008db798bd4f33b7826f9f76f756606f5417100beef3 |
| 0.69.5 | sha256:5aaa1d7cfa9ca4649d6ffad165435c519dc836fa6e21b729a2174ad10b057d2b |
| 0.69.6 | sha256:425cd3e1a2846ac73944e891250377d2b03653e6f028833e30fc00c1abbc6d33 |
影響パッケージのリストは Socket追跡ページ で確認できる。
⚠ 重要な注意: LiteLLM v1.82.8 には
litellm_init.pthファイルが含まれている。Pythonの.pthファイルは Pythonインタープリターが起動するだけで自動実行 される(Snyk)。これは以下を意味する:
pip show litellmを実行する → pip自体がPythonプロセスを起動 → .pthが発火するpython -c "import litellm"→ 同様に発火する- IDEのPython言語サーバーが起動 → 同様に発火する
.pthファイルによる任意コード実行の廃止は CPython Issue #78125 で 2018年から提案されているが、代替メカニズムの設計が未完了であり、任意コード実行機能は現在も有効のままである。なお、隠し.pthファイルのスキップについては Issue #113659 で起票され、2024年2月にPython 3.12.2で修正済みであるが、これは本件の攻撃手法(非隠しファイルとしての.pthの悪用)とは無関係である。
Pythonを起動せず、ファイルシステムを直接確認する:
v1.82.7 または v1.82.8 を動かしていた場合には、その環境を侵害済みとして扱うべきである。
出典: Endor Labs、Snyk。
kube-system namespace内に攻撃者のDaemonSetに対応するPodが作成されていないか確認する。LiteLLMバリアントでは node-setup-*、元のTrivy/KICSバリアントでは host-provisioner-std(標準版)および host-provisioner-iran(ワイパー版)の名前が使用される(ramimac)C2ドメイン/IP一覧:
| ドメイン/IP | 用途 |
|---|---|
scan.aquasecurtiy[.]org / 45.148.10.212 |
Trivy攻撃のC2 |
checkmarx[.]zone / 83.142.209.11 |
KICS/LiteLLM攻撃のC2 |
models.litellm[.]cloud |
LiteLLM攻撃の窃取先 |
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0.io |
CanisterWormのICP C2(ブロック済み) |
plug-tab-protective-relay.trycloudflare.com |
Cloudflareトンネル経由の窃取 |
Kubernetes確認コマンド:
| 対象 | 安全なバージョン |
|---|---|
| Trivy バイナリ | v0.69.2, v0.69.3 |
| trivy-action | v0.35.0 |
| setup-trivy | v0.2.6 |
| kics-github-action | SHA固定(3/23 12:58 UTC以前のコミット) |
| ast-github-action | SHA固定 |
| cx-dev-assist (Open VSX) | v1.10.0以上 |
| ast-results (Open VSX) | v2.56.0以上 |
| litellm | v1.82.6 |
出典: GHSA-69fq-xp46-6x23、Aqua Security公式ブログ、Checkmarx Security Update。
Gitタグはforce-push可能であり、今回の攻撃はまさにその仕組みを悪用したものである。タグ参照を廃止し、イミュータブルなコミットSHAで固定すべきである。
上記のSHA 57a97c7e7821a5776cebc9bb87c984fa69cba8f1 は、今回の攻撃で唯一改ざんされなかったv0.35.0の安全なコミットである(ramimac)。GitHubのImmutable Releases機能によって保護されていた。
加えて、CI/CDランナーからの想定外のアウトバウンド通信を検知する仕組み(Egress制御)を導入することも有効である。今回の攻撃では、ペイロードがC2ドメインへのHTTPS POSTで窃取データを送信していた。Egress Policyを設定し、許可リスト外のドメインへの通信をブロックしていれば、窃取を阻止できた可能性がある。
本インシデントは、クレデンシャルローテーションの手順に不備があれば、ローテーションの効果が大幅に減殺されることを示した。対応にあたるユーザは、自組織のローテーションにおいても同様の問題が生じないよう留意する必要がある。
今回のインシデントでExposure Windowに該当し、シークレットのローテーションを実施する場合は、以下の4点を満たさなければローテーションの効果が失われるリスクがある。
1. 全クレデンシャルの棚卸し
まず「何が存在するか」を把握する。見落とされやすいものとして以下がある:
2. アトミックな無効化と再発行
逐次的なローテーション(1つずつ無効化→再発行)では、新旧のクレデンシャルが共存する時間帯が生まれる。CVE-2026-33634の公式説明が示すとおり、全てのクレデンシャルを同時に無効化し、その後に新しいクレデンシャルを発行すべきである。
3. ローテーション前の環境クリーン化
侵害されたサーバー、ランナー、開発端末の上で新しいクレデンシャルを発行すれば、攻撃者はそのクレデンシャルを窃取できる。本攻撃のペイロードは、プロセスメモリの読み取り(/proc/<pid>/mem)、ファイルシステムの走査、環境変数の収集を行っていた。ローテーション前に、まず環境をクリーンな状態に復元するか、新しい環境を構築してからローテーションを実施すべきである。
4. ローテーション後の検証
ローテーションが完了した後、旧クレデンシャルが確実に無効化されていることを検証する。具体的には:
401 Unauthorized を返すことの確認3月25日06:00(JST)時点で、本攻撃の実行者は調査継続中である。MandiantもCyberScoopの取材において攻撃者の正式な名称付けを行っていない("The attackers, which the incident response firm has yet to name")。
一方、攻撃ペイロードに自己署名文字列「TeamPCP Cloud stealer」が埋め込まれていることから、複数のセキュリティ企業(Wiz、Endor Labs、Sysdig、Cyble)はTeamPCPとして追跡している。
ただし、Socketは「自己ラベルは偽旗の可能性もあるが、過去のTeamPCPツールとの技術的重複から、真正な帰属が妥当である」と指摘しており、帰属は確定的ではなく「高い確信度」での評価である点に留意する必要がある。
| 項目 | 詳細 |
|---|---|
| 追跡名 | TeamPCP(別名: DeadCatx3, PCPcat, ShellForce, PersyPCP)。なお、CipherForceはWiz Threat Centerが使用する名称であり、関連するランサムウェアツール/アフィリエイトを指す可能性がある。インシデントレスポンス企業による公式命名はなされていない |
| 手法 | CI/CDパイプラインの侵害、サプライチェーン攻撃、自己増殖型ワーム、ランサムウェア、クリプトマイニング |
| 特徴 | 各攻撃で窃取したクレデンシャルを次の標的に活用する連鎖型攻撃パターン。セキュリティツール(脆弱性スキャナ、IaCスキャナ、LLMプロキシ)を選択的に標的とする |
| 関連脅威プロファイル | Wiz Threat Profile, Cyble, Flare |
Mandiantによれば、本攻撃の背後にいるグループは主に米国、カナダ、英国に拠点を置く複数の脅威グループと連携しており、「非常に積極的な恐喝」で知られるとのことである。
| 情報源 | URL |
|---|---|
| Aqua Security公式ブログ | https://www.aquasec.com/blog/trivy-supply-chain-attack-what-you-need-to-know/ |
| GitHub Security Advisory GHSA-69fq-xp46-6x23 | https://github.com/aquasecurity/trivy/security/advisories/GHSA-69fq-xp46-6x23/ |
| GitHub Discussion #10425 | https://github.com/aquasecurity/trivy/discussions/10425 |
| Docker公式ブログ | https://www.docker.com/blog/trivy-supply-chain-compromise-what-docker-hub-users-should-know/ |
| Checkmarx Security Update | https://checkmarx.com/blog/checkmarx-security-update/ |
| LiteLLM GitHub Issue #24512 | https://github.com/BerriAI/litellm/issues/24512 |
| CVE-2026-33634 (Tenable) | https://www.tenable.com/cve/CVE-2026-33634 |
| CVE-2026-33634 (NVD) | https://nvd.nist.gov/vuln/detail/CVE-2026-33634 |
| CISA KEV カタログ | https://www.cisa.gov/known-exploited-vulnerabilities-catalog |
| 情報源 | URL |
|---|---|
| ramimac (タイムライン&IOC) | https://ramimac.me/trivy-teampcp/ |
| Wiz Threat Center (TeamPCP) | https://threats.wiz.io/all-actors/teampcp |
| 情報源 | URL |
|---|---|
| CyberScoop (Mandiant/RSAC) | https://cyberscoop.com/trivy-supply-chain-attack-aqua-downstream-extortion-fallout/ |
| The Hacker News (Docker Hub) | https://thehackernews.com/2026/03/trivy-hack-spreads-infostealer-via.html |
| The Hacker News (CanisterWorm) | https://thehackernews.com/2026/03/trivy-supply-chain-attack-triggers-self.html |
| The Hacker News (KICS) | https://thehackernews.com/2026/03/teampcp-hacks-checkmarx-github-actions.html |
| The Hacker News (LiteLLM) | https://thehackernews.com/2026/03/teampcp-backdoors-litellm-versions.html |
本記事は今後の情報に基づき更新される可能性がある。最新情報は本ブログおよび上記の公式ソースを参照されたい。