FutureVuls Blog

GitHub Actions・Docker Hub・npm・PyPIに波及:Trivyサプライチェーン攻撃の影響確認ガイド

作成者: 棚井龍之介|Mar 25, 2026 7:25:13 AM

本記事の情報は 2026年3月25日 06:00 JST(3月24日 21:00 UTC)時点のものである。
本インシデントは現在も進行中であり、今後新たな情報が判明する可能性がある。
最新の一次情報は Aqua Security公式ブログ および GitHub Discussion #10425 を参照されたい。本ブログの執筆にあたり参照したセキュリティ企業の分析レポート・ニュース記事へのリンクは、本記事末尾のセクション7(参考リンク)にまとめている。
3/22公開の第2レポートはこちらから確認できる。

まず確認すべきこと(Trivyサプライチェーン攻撃の影響確認チェックリスト)

2026年3月19日以降に、以下のいずれかを使用していないか?

  • [ ] GitHub Actions で aquasecurity/trivy-action をタグ参照で使用した
  • [ ] GitHub Actions で aquasecurity/setup-trivy をタグ参照で使用した
  • [ ] Docker Hub から aquasec/trivy の v0.69.4, v0.69.5, v0.69.6, または latest タグを pull した
  • [ ] Trivy バイナリ v0.69.4 を GitHub Releases からダウンロードした
  • [ ] GitHub Actions で Checkmarx/kics-github-action をタグ参照で使用した
  • [ ] GitHub Actions で Checkmarx/ast-github-action をタグ参照で使用した
  • [ ] Open VSX から cx-dev-assist v1.7.0 または ast-results v2.53.0 をインストールした
  • [ ] npm パッケージ @emilgroup/*, @opengov/*, @teale.io/eslint-config などの CanisterWorm 影響パッケージを使用した
  • [ ] PyPI から litellm v1.82.7 または v1.82.8 をインストールした

1つでも該当する場合は、本記事のセクション3(確認方法)とセクション4(対応アクション)を直ちに参照してください。

1. 第2レポート以降の主要イベント

第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を参照。

2. 影響を受けた対象とバージョンの一覧

2.1 GitHub Actions

対象 影響バージョン/タグ 安全なバージョン 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については WizSysdigCheckmarx Security Update

2.2 Trivyバイナリ/コンテナイメージ

対象 影響バージョン 安全なバージョン 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なしで直接プッシュされたものである。

出典: Docker公式ブログGHSA-69fq-xp46-6x23

2.3 npm パッケージ(CanisterWorm)

対象 概要 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追跡ページ で確認可能。

2.4 PyPI パッケージ

対象 影響バージョン 安全なバージョン 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 LabsSnykFutureSearch(発見者)。

2.5 VS Code拡張(Open VSX)

対象 影響バージョン 安全なバージョン 備考
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のみ

出典: WizCheckmarx Security Update。安全なバージョンはCheckmarx公式で確認。

2.6 CVE情報

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」ステータスのままスコアを割り当てていない。

出典: TenableGHSA-69fq-xp46-6x23。CISA KEVカタログは3月25日06:00(JST)時点でCVE-2026-33634を含んでいない(CISA KEV)。

3. 影響を受けたかどうかの確認方法

3.1 GitHub Actions(trivy-action / setup-trivy / kics-github-action / ast-github-action)

 

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 という名前のリポジトリが作成されている可能性がある。

 

出典: CrowdStrikeWiz

 

3.2 Docker Hub(aquasec/trivy)

 

 

以下のダイジェストに一致する場合は侵害されている(GHSA-69fq-xp46-6x23):
タグ ダイジェスト
0.69.4 sha256:27f446230c60bbf0b70e008db798bd4f33b7826f9f76f756606f5417100beef3
0.69.5 sha256:5aaa1d7cfa9ca4649d6ffad165435c519dc836fa6e21b729a2174ad10b057d2b
0.69.6 sha256:425cd3e1a2846ac73944e891250377d2b03653e6f028833e30fc00c1abbc6d33

3.3 npm パッケージ(CanisterWorm)

 


影響パッケージのリストは Socket追跡ページ で確認できる。

 

3.4 PyPI パッケージ(LiteLLM)

やってはいけない確認方法

⚠ 重要な注意: 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 LabsSnyk

4. 対応アクション

4.1 即時対応(Exposure Windowに該当する場合)

  1. 影響を受けたアーティファクトの即時削除: 悪意あるバージョンのバイナリ、コンテナイメージ、パッケージを全て削除する
  2. 全シークレットのローテーション: 該当するCIパイプライン・ランナーがアクセス可能だった全てのシークレットを侵害済みとして扱い、即時ローテーションする。対象には以下が含まれる:
    • クラウドプロバイダー認証情報(AWS, GCP, Azure)
    • GitHub PAT / GITHUB_TOKEN
    • SSH鍵
    • Kubernetes トークン / kubeconfig
    • Docker Hub / レジストリ認証情報
    • データベース認証情報
    • APIキー(Slack Webhook, Discord等を含む)
  3. ワークフローの固定: GitHub Actionsのバージョン指定をタグからSHAピンニングに変更する
  4. ネットワークログとインフラの確認: 以下のC2ドメイン/IPへの通信がないか確認する。加えて、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確認コマンド:

 

4.2 安全なバージョンへの移行

対象 安全なバージョン
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-6x23Aqua Security公式ブログCheckmarx Security Update

4.3 GitHub Actionsのピンニング

Gitタグはforce-push可能であり、今回の攻撃はまさにその仕組みを悪用したものである。タグ参照を廃止し、イミュータブルなコミットSHAで固定すべきである。

 

 

上記のSHA 57a97c7e7821a5776cebc9bb87c984fa69cba8f1 は、今回の攻撃で唯一改ざんされなかったv0.35.0の安全なコミットである(ramimac)。GitHubのImmutable Releases機能によって保護されていた。

加えて、CI/CDランナーからの想定外のアウトバウンド通信を検知する仕組み(Egress制御)を導入することも有効である。今回の攻撃では、ペイロードがC2ドメインへのHTTPS POSTで窃取データを送信していた。Egress Policyを設定し、許可リスト外のドメインへの通信をブロックしていれば、窃取を阻止できた可能性がある。

5. クレデンシャルローテーションに関する警告

本インシデントは、クレデンシャルローテーションの手順に不備があれば、ローテーションの効果が大幅に減殺されることを示した。対応にあたるユーザは、自組織のローテーションにおいても同様の問題が生じないよう留意する必要がある。

5.1 対応するユーザへの警告

今回のインシデントでExposure Windowに該当し、シークレットのローテーションを実施する場合は、以下の4点を満たさなければローテーションの効果が失われるリスクがある。

1. 全クレデンシャルの棚卸し

まず「何が存在するか」を把握する。見落とされやすいものとして以下がある:

  • GitHub PAT(複数アカウント、組織間ブリッジ用ボットを含む)
  • Docker Hub / コンテナレジストリの認証情報
  • npm / PyPI の公開トークン
  • GPG署名鍵
  • CI/CDプラットフォームのサービスアカウント
  • Slack / Twitter / Discord のBot Token
  • SSH鍵
  • クラウドプロバイダーのIAMクレデンシャル

2. アトミックな無効化と再発行

逐次的なローテーション(1つずつ無効化→再発行)では、新旧のクレデンシャルが共存する時間帯が生まれる。CVE-2026-33634の公式説明が示すとおり、全てのクレデンシャルを同時に無効化し、その後に新しいクレデンシャルを発行すべきである。

3. ローテーション前の環境クリーン化

侵害されたサーバー、ランナー、開発端末の上で新しいクレデンシャルを発行すれば、攻撃者はそのクレデンシャルを窃取できる。本攻撃のペイロードは、プロセスメモリの読み取り(/proc/<pid>/mem)、ファイルシステムの走査、環境変数の収集を行っていた。ローテーション前に、まず環境をクリーンな状態に復元するか、新しい環境を構築してからローテーションを実施すべきである。

4. ローテーション後の検証

ローテーションが完了した後、旧クレデンシャルが確実に無効化されていることを検証する。具体的には:

  • 旧トークンを使用したAPI呼び出しが 401 Unauthorized を返すことの確認
  • 旧SSH鍵による接続が拒否されることの確認
  • CI/CDパイプラインが新しいクレデンシャルで正常に動作することの確認
  • 監査ログで旧クレデンシャルの使用が検出された場合のアラート設定

6. 攻撃者に関する情報

3月25日06:00(JST)時点で、本攻撃の実行者は調査継続中である。MandiantもCyberScoopの取材において攻撃者の正式な名称付けを行っていない("The attackers, which the incident response firm has yet to name")。

一方、攻撃ペイロードに自己署名文字列「TeamPCP Cloud stealer」が埋め込まれていることから、複数のセキュリティ企業(WizEndor LabsSysdigCyble)はTeamPCPとして追跡している。

ただし、Socketは「自己ラベルは偽旗の可能性もあるが、過去のTeamPCPツールとの技術的重複から、真正な帰属が妥当である」と指摘しており、帰属は確定的ではなく「高い確信度」での評価である点に留意する必要がある。

項目 詳細
追跡名 TeamPCP(別名: DeadCatx3, PCPcat, ShellForce, PersyPCP)。なお、CipherForceはWiz Threat Centerが使用する名称であり、関連するランサムウェアツール/アフィリエイトを指す可能性がある。インシデントレスポンス企業による公式命名はなされていない
手法 CI/CDパイプラインの侵害、サプライチェーン攻撃、自己増殖型ワーム、ランサムウェア、クリプトマイニング
特徴 各攻撃で窃取したクレデンシャルを次の標的に活用する連鎖型攻撃パターン。セキュリティツール(脆弱性スキャナ、IaCスキャナ、LLMプロキシ)を選択的に標的とする
関連脅威プロファイル Wiz Threat Profile, Cyble, Flare

Mandiantによれば、本攻撃の背後にいるグループは主に米国、カナダ、英国に拠点を置く複数の脅威グループと連携しており、「非常に積極的な恐喝」で知られるとのことである。

7. 参考リンク

一次情報

情報源 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
Wiz (Trivy) https://www.wiz.io/blog/trivy-compromised-teampcp-supply-chain-attack
Wiz (KICS) https://www.wiz.io/blog/teampcp-attack-kics-github-action
CrowdStrike https://www.crowdstrike.com/en-us/blog/from-scanner-to-stealer-inside-the-trivy-action-supply-chain-compromise/
Sysdig https://www.sysdig.com/blog/teampcp-expands-supply-chain-compromise-spreads-from-trivy-to-checkmarx-github-actions
Endor Labs (LiteLLM) https://www.endorlabs.com/learn/teampcp-isnt-done
Socket (CanisterWorm ブログ) https://socket.dev/blog/canisterworm-npm-publisher-compromise-deploys-backdoor-across-29-packages
Socket (CanisterWorm 追跡ページ) https://socket.dev/supply-chain-attacks/canisterworm
Socket (trivy-action) https://socket.dev/blog/trivy-under-attack-again-github-actions-compromise
JFrog (CanisterWorm) https://research.jfrog.com/post/canister-worm/
Snyk (LiteLLM) https://snyk.io/articles/poisoned-security-scanner-backdooring-litellm/
FutureSearch (LiteLLM発見者) https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/
Mend (CanisterWorm) https://www.mend.io/blog/canisterworm-the-self-spreading-npm-attack-that-uses-a-decentralized-server-to-stay-alive/
Aikido Security (CanisterWorm発見者) https://www.aikido.dev/blog/teampcp-deploys-worm-npm-trivy-compromise
StepSecurity https://www.stepsecurity.io/blog/trivy-compromised-a-second-time---malicious-v0-69-4-release
GitGuardian https://blog.gitguardian.com/trivys-march-supply-chain-attack-shows-where-secret-exposure-hurts-most/
Cyble (TeamPCP脅威プロファイル) https://cyble.com/threat-actor-profiles/teampcp/
Flare (TeamPCP) https://flare.io/learn/resources/blog/teampcp-cloud-native-ransomware

タイムライン・IOC・脅威アクタープロファイル

情報源 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

本記事は今後の情報に基づき更新される可能性がある。最新情報は本ブログおよび上記の公式ソースを参照されたい。