FutureVuls Blog

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

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

【注意事項】

⚠ 本ブログに記載のコマンドや確認手順は、読者自身の環境における影響確認を支援する目的で提供している。組織の環境で実行する場合は、必ずシステム管理者またはセキュリティ管理者の許可を得ること。すべての操作は自己の責任において実施されたい。

【2026年3月31日 19:00 JST 更新】 以下の情報を追記・更新

- axios npm パッケージのサプライチェーン攻撃情報を追加(3/31発生、影響バージョン: 1.14.1 / 0.30.4)。チェックリスト、タイムライン、影響バージョン一覧(セクション2.7新設)、確認方法(セクション3.6新設)、C2/IoC情報を追加
- 同一マルウェアを配布する追加パッケージ(@shadanai/openclaw@qqbrowser/openclaw-qbot)の情報を追加
- axios攻撃のC2(sfrclak[.]com:8000 / 142.11.206.73)をセクション4.1に追加
- セクション6にaxios攻撃のTeamPCP帰属に関する注記を追加

【2026年3月31日 07:00 JST 更新】 以下の情報を追記・更新

- 【注意事項】を追加
- Telnyx Python SDK(PyPI)の侵害情報を追加(3/27発生、影響バージョン: 4.87.1 / 4.87.2)。チェックリスト、タイムライン、影響バージョン一覧、確認方法(セクション3.5新設)を追加
- CVE-2026-33634 が CISA KEVカタログに登録(3/26登録、是正期限: 4/09)。セクション2.6のステータスを更新
- CVE-2026-28353(第1波・VSCode拡張機能の侵害)の情報をセクション2.6に追加
- Telnyx攻撃のC2(83.142.209.203:8080)をセクション4.1に追加
- Checkmarx GitHub Actionsの安全なバージョンを更新(kics: v2.1.20以上、ast: v2.3.33以上)
- セクション4.3にオーガニゼーションレベルでのSHAピンニング強制とpinactの使用方法を追加

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

まず確認すべきこと

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 をインストールした
  • [ ] PyPI から telnyx v4.87.1 または v4.87.2 をインストールした
  • [ ] npm パッケージ axios v1.14.1 または v0.30.4 をインストールした

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
3/26 CVE-2026-33634 が CISA KEV(Known Exploited Vulnerabilities)カタログに追加された(CISA Alert は3/26公開)。BOD 22-01 に基づくFCEB機関の是正期限は 2026/04/09 CISA KEV Catalog, CISA Alert
3/27 03:51 Telnyx Python SDK の悪意あるバージョン v4.87.1 が PyPI にアップロードされた(v4.87.2は約04:07にアップロード)。LiteLLM侵害で窃取されたPyPIトークンが使用された疑いがある。WAVオーディオステガノグラフィによるペイロード配信というTTPが使用されている Telnyx Security Notice, Endor Labs
3/27 ~10:13 PyPI が telnyx v4.87.1 / v4.87.2 を隔離した(Exposure Window: 約6.4時間) Telnyx Security Notice
3/30 05:57 plain-crypto-js@4.2.0(クリーンなデコイ版)がnpmに公開された StepSecurity
3/30 23:59 plain-crypto-js@4.2.1(悪意あるペイロード入り)がnpmに公開された。Socketが約6分後に自動検知 Socket, Snyk
3/31 00:21 axios@1.14.1 が侵害済みアカウント jasonsaayman からnpm CLIで手動公開された StepSecurity, The Hacker News
3/31 01:00 axios@0.30.4 が同アカウントから公開された。1.xと0.x両ブランチが39分間で汚染された Socket, Aikido Security
3/31 01:38 axiosメンテナーがPR #10591をマージし、deprecate.ymlワークフローを追加。悪意あるバージョンをレジストリ上で非推奨としてマーク Mend.io
3/31 03:29 npmがaxios@1.14.1およびaxios@0.30.4を削除した(Exposure Window: 約3時間) 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時間)
telnyx v4.87.1, v4.87.2 v4.87.0 3/27 03:51 – ~10:13(約6.4時間)

注意: LiteLLMは1日あたり約340万回ダウンロードされるパッケージであり、約3時間の曝露でも影響範囲は大きい(Snyk

出典: Endor LabsSnykFutureSearch(発見者)

注意: Telnyx Python SDKは月間70万以上ダウンロードのパッケージである。LiteLLM侵害(3/24)で窃取されたPyPIトークンを使用してアップロードされた疑いがある。技術詳細はセクション3を参照

出典: Telnyx Security NoticeEndor LabsSafeDep

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/26追加、是正期限: 2026/04/09)
CVE-2026-28353 10.0 (Critical) CWE-506 (Embedded Malicious Code) GHSA-8mr6-gf9x-j8qg

※ 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

CVE-2026-28353 は第1波攻撃(2/27~2/28)におけるTrivy VSCode拡張機能(Open VSX版 v1.8.12)の侵害に対して割り当てられたCVEである。

出典: GHSA-8mr6-gf9x-j8qgCVETodo

2.7 npm パッケージ(axios)

対象 影響バージョン 安全なバージョン Exposure Window (UTC)
axios v1.14.1, v0.30.4 v1.14.0, v0.30.3 3/31 00:21 – 03:29(約3時間)

注意: axiosはクラウド環境の約80%に存在するnpmの最も広く利用されるパッケージの一つである(Wiz, StepSecurity)。短時間の曝露にもかかわらず、影響を受けた環境の一部で実行が観測されている(Wiz),(StepSecurity)。

悪意ある依存パッケージ: plain-crypto-js@4.2.1 — axiosソースコード内では一切import/requireされない「ファントム依存」であり、postinstall フックでRATドロッパー(setup.js)を実行することのみを目的とする。正規の crypto-js パッケージを偽装し、同一の説明文・著者名・リポジトリURLを使用している(StepSecurity, Socket)。

RATドロッパーはOS検出後にプラットフォーム固有のペイロードをC2(sfrclak[.]com:8000)からダウンロードし、実行後に setup.js を自己削除、package.json をクリーンなスタブに差し替えることで痕跡を消去する。事後の node_modules 検査では検知困難であるため、lockfileの確認が必須である。

プラットフォーム ペイロードパス 特徴
macOS /Library/Caches/com.apple.act.mond Mach-Oバイナリ(Wiz, Mend.io)。Apple正規プロセスに偽装。codesign で自己署名
Windows %PROGRAMDATA%\wt.exe(PowerShellのコピー)→ 隠しPowerShellスクリプト実行 レジストリRunキー(MicrosoftUpdate)で永続化。再ダウンロード用バッチファイルを設置
Linux /tmp/ld.py Python RAT。nohup でバックグラウンド実行

同一マルウェアを配布する追加パッケージ: Socketは以下のパッケージがaxios攻撃と同一の plain-crypto-js マルウェアを配布していることを確認している(Socket):

- @shadanai/openclaw(バージョン: 2026.3.28-2, 2026.3.28-3, 2026.3.31-1, 2026.3.31-2)(Socket, Wiz
- @qqbrowser/openclaw-qbot@0.0.130 — 改ざんされた axios@1.14.1node_modules/ 内にバンドルし、plain-crypto-js を依存として注入

アドバイザリ: GHSA-fw8c-xr5c-95f9, MAL-2026-2306, SNYK-JS-AXIOS-15850650

出典: StepSecurity, Socket, Wiz, Aikido Security, The Hacker News, Snyk, Mend.io

axios攻撃のIoC(侵害指標)

以下のハッシュは Wiz が公開したIoCである。

カテゴリ インジケータ 詳細 SHA256
侵害パッケージ axios-1.14.1.tgz Stage 1, npm パッケージ 5bb67e88846096f1f8d42a0f0350c9c46260591567612ff9af46f98d1b7571cd
侵害パッケージ axios-0.30.4.tgz Stage 1, npm パッケージ 59336a964f110c25c112bcc5adca7090296b54ab33fa95c0744b94f8a0d80c0f
悪意あるパッケージ plain-crypto-js-4.2.1.tgz Stage 1.5, トロイの木馬化 npm パッケージ 58401c195fe0a6204b42f5f90995ece5fab74ce7c69c67a24c61a057325af668
ペイロード com.apple.act.mond Stage 2 (macOS), Mach-O バイナリ 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
ペイロード stage2.ps1 Stage 2 (Windows), PowerShell スクリプト 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101
ペイロード ld.py Stage 2 (Linux), Python スクリプト fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf
C2ドメイン sfrclak[.]com C2ドメイン
C2 IP 142.11.206[.]73 C2 IP
ネットワーク ポート 8000、パス /6202033 C2通信
ファイルパス /Library/Caches/com.apple.act.mond macOS 永続化パス
ファイルパス %PROGRAMDATA%\wt.exe Windows アーティファクト
ファイルパス %TEMP%\6202033.vbs, %TEMP%\6202033.ps1 Windows スクリプト
ファイルパス /tmp/ld.py Linux スクリプト
追加パッケージ @shadanai/openclaw バージョン: 2026.3.28-2, 2026.3.28-3, 2026.3.31-1, 2026.3.31-2
追加パッケージ @qqbrowser/openclaw-qbot バージョン: 0.0.130
アカウント npm: jasonsaayman 侵害メンテナー(メール変更先: ifstap@proton.me
アカウント npm: nrwise plain-crypto-js 公開者(nrwise@proton.me

出典: Wiz。追加パッケージ(@shadanai/openclaw, @qqbrowser/openclaw-qbot)の情報は Socket および Wiz による

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

3.5 PyPI パッケージ(Telnyx)

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

⚠ 重要な注意: Telnyx v4.87.1 / v4.87.2 は telnyx/_client.py に悪意あるコードが埋め込まれている。モジュールスコープで setup()(Windows攻撃パス)と FetchAudio()(Linux/macOS攻撃パス)が呼び出されるため、import telnyx の時点でペイロードが実行される。以下の操作は危険である:

- python -c "import telnyx"ペイロードが発火する

v4.87.1 には攻撃者のタイポ(Setup() vs setup() の大文字/小文字不一致)が含まれている。SafeDepおよびEndor Labsのコードレベル分析によれば、この呼び出しはモジュールスコープで例外処理なしに実行されるため、NameError により FetchAudio() に到達する前にモジュール読み込みが中断され、いずれの攻撃パスも実行されない。一方、一部のブログではv4.87.1のLinux攻撃パスは機能したと報告している。v4.87.2 ではこのタイポが修正され、両攻撃パスが確実に発火する。

いずれのバージョンも悪意あるコードが含まれていることに変わりはなく、侵害済みとして扱うべきである。

LiteLLM(v1.82.8)の .pth ファイルとは異なり、Telnyxの攻撃コードはモジュール本体(_client.py)に直接埋め込まれているため、Pythonインタープリターの起動だけでは発火しないが、import telnyx を伴う操作で発火する。

安全な確認方法

Pythonを起動せず、ファイルシステムを直接確認する:

 

感染痕跡の確認(Telnyx固有のIOC)

Telnyx攻撃はWAVオーディオステガノグラフィを使用してペイロードを配信する。C2サーバー 83.142.209.203:8080 から .wav ファイルをダウンロードし、オーディオフレームデータからXOR復号で実行ファイルを抽出する。

 

v4.87.1 または v4.87.2 をインストールしていた場合には、その環境を侵害済みとして扱うべきである。

出典: Telnyx Security NoticeSafeDepEndor LabsSocket.devTrend Micro

3.6 npm パッケージ(axios)

注意点

⚠ 重要な注意: axios v1.14.1 / v0.30.4 自体には悪意あるコードは含まれていないが、依存パッケージ plain-crypto-js@4.2.1postinstall フックが npm install 時に自動実行される。マルウェアは実行後に自己削除し、package.json をクリーンなスタブに差し替えるため、事後に node_modules/plain-crypto-js/ を検査しても、setup.js は既に削除されている可能性が高い。ただし、ディレクトリ自体の存在は侵害の証拠となる(正規のaxiosバージョンには plain-crypto-js は依存に含まれないため)

確認方法

Step 1: lockfileで悪意あるバージョンの確認

 

Step 2: plain-crypto-jsの存在確認

plain-crypto-js は正規のaxiosリリースには含まれない依存パッケージである。このディレクトリが存在すれば、悪意あるバージョンがインストールされた証拠となる。

 

Step 3: ファイルシステム上のペイロード痕跡確認

 

Step 4: ネットワークログでのC2通信痕跡確認

 

Step 5: CI/CDパイプラインの確認

npm install を実行したCI/CDパイプラインも確認対象である。パイプラインが axios@1.14.1 または axios@0.30.4 をインストールした場合、注入された全シークレットのローテーションが必要である(StepSecurity)。

v1.14.1 または v0.30.4 をインストールしていた場合には、その環境を侵害済みとして扱うべきである。

出典: StepSecurity, Aikido Security, Wiz, Socket

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トンネル経由の窃取
83.142.209.203:8080 Telnyx攻撃のC2(WAVペイロード配信)
sfrclak[.]com:8000 / 142.11.206.73 axios攻撃のC2(RAT通信、60秒間隔ビーコン)

Kubernetes確認コマンド:

 

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

対象 安全なバージョン
Trivy バイナリ v0.69.2, v0.69.3
trivy-action v0.35.0
setup-trivy v0.2.6
kics-github-action v2.1.20以上
ast-github-action v2.3.33以上
cx-dev-assist (Open VSX) v1.10.0以上
ast-results (Open VSX) v2.56.0以上
litellm v1.82.6
telnyx v4.87.0
axios (npm) v1.14.0, v0.30.3

出典: 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を設定し、許可リスト外のドメインへの通信をブロックしていれば、窃取を阻止できた可能性がある。

オーガニゼーションレベルでのSHAピンニング強制

GitHubはオーガニゼーション・エンタープライズ・リポジトリの各レベルで、全Actionsに対してフルコミットSHAでのピンニングを強制するポリシーを提供している。Settings → Actions → General の「Policies」セクションで「Require actions to be pinned to a full-length commit SHA」を有効にすると、SHAピンニングされていないActionを参照するワークフローは実行時にブロックされる。

ピンニング支援ツール: pinact

既存のワークフローを手作業で書き換えるのは現実的ではない。pinact を使用すると、ワークフロー内のタグ参照をフルコミットSHAに一括変換できる。

インストール:

⚠ 以下のコマンドを実行する前に、必ず組織のセキュリティ管理者またはインフラ管理者の許可を得ること。外部バイナリの導入はセキュリティポリシーに抵触する場合がある。

 

その他のインストール方法や、GitHub Releasesからのバイナリ直接ダウンロードについては INSTALL.md を参照。

実行(リポジトリのルートで):

 

Before(タグ参照 — force-pushで改ざん可能):

 

After(pinact実行後 — SHAピンニング、元のバージョンはコメントで保持):

 

pinactはタグと同一SHAを持つsemverバージョンを自動解決する(例: v4v4.2.2)。semverではないブランチ参照(main 等)は安全のためスキップされる。

出典: pinactGitHub Docs — Security hardening for GitHub Actions

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はTeamPCPが自ら名乗るランサムウェア作戦名であり、Vectとの提携とは別にTeamPCPが独自に運営している。Wiz Threat CenterもTeamPCPの別名として追跡している。インシデントレスポンス企業による公式命名はなされていない
手法 CI/CDパイプラインの侵害、サプライチェーン攻撃、自己増殖型ワーム、ランサムウェア、クリプトマイニング
特徴 各攻撃で窃取したクレデンシャルを次の標的に活用する連鎖型攻撃パターン。セキュリティツール(脆弱性スキャナ、IaCスキャナ、LLMプロキシ)を選択的に標的とする
関連脅威プロファイル Wiz Threat Profile, Cyble, Flare

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

【3/31 更新】 3/25以降、以下の動きが報告されている。

- TeamPCPがランサムウェアグループ「Vect」と提携し、窃取クレデンシャルを用いた恐喝活動を開始したとされる(SocketSANS ISC
- TeamPCPが独自のランサムウェア「CipherForce」を運用しているとの報告がある(SANS ISC Update 004
- LAPSUS$がTeamPCP由来のクレデンシャルを用いたとされるAstraZenecaの侵害を主張している(SANS ISC Update 004Hackread

本ブログは影響確認を目的としているため、攻撃者の詳細な分析については上記の各ソースを参照されたい。

【3/31 19:00 更新】 axios npm パッケージのサプライチェーン攻撃(3/31発生)について、Socketは「この活動を最近報告されたTeamPCPキャンペーンに結びつける証拠は観測していない(we have not observed any evidence linking this activity to the recently reported TeamPCP campaigns)」と明記しており、Wizも「未知の脅威アクター(unknown threat actor)」と記載している。攻撃者のProtonMailの使用パターン(ifstap@proton.me, nrwise@proton.me)はTeamPCPの過去の手法と一致するが、帰属は現時点で確定していない。axios攻撃の詳細はセクション2.7および3.6を参照。

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

3/31更新で追加した参考リンク

情報源 URL
Telnyx Security Notice https://telnyx.com/resources/telnyx-python-sdk-supply-chain-security-notice-march-2026
Endor Labs (Telnyx) https://www.endorlabs.com/learn/teampcp-strikes-again-telnyx-compromised-three-days-after-litellm
SafeDep (Telnyx) https://safedep.io/malicious-telnyx-pypi-compromise/
The Hacker News (Telnyx) https://thehackernews.com/2026/03/teampcp-pushes-malicious-telnyx.html
Trend Micro (Telnyx) https://www.trendmicro.com/en_us/research/26/c/teampcp-telnyx-attack-marks-a-shift-in-tactics.html
CISA Alert (CVE-2026-33634 KEV追加) https://www.cisa.gov/news-events/alerts/2026/03/26/cisa-adds-one-known-exploited-vulnerability-catalog
GHSA-8mr6-gf9x-j8qg (CVE-2026-28353) https://github.com/aquasecurity/trivy-vscode-extension/security/advisories/GHSA-8mr6-gf9x-j8qg
GitHub Actions SHA Pinning Policy https://github.blog/changelog/2025-08-15-github-actions-policy-now-supports-blocking-and-sha-pinning-actions/
GitHub Well-Architected — Actions Security https://wellarchitected.github.com/library/application-security/recommendations/actions-security/
pinact (SHAピンニングツール) https://github.com/suzuki-shunsuke/pinact

3/31 19:00更新で追加した参考リンク

情報源 URL
StepSecurity (axios) https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan
Aikido Security (axios) https://www.aikido.dev/blog/axios-npm-compromised-maintainer-hijacked-rat
Wiz (axios) https://www.wiz.io/blog/axios-npm-compromised-in-supply-chain-attack
Socket (axios) https://socket.dev/blog/axios-npm-package-compromised
The Hacker News (axios) https://thehackernews.com/2026/03/axios-supply-chain-attack-pushes-cross.html
Snyk (axios) https://snyk.io/blog/axios-npm-package-compromised-supply-chain-attack-delivers-cross-platform/
Mend.io (axios) https://www.mend.io/blog/poisoned-axios-npm-account-takeover-50-million-downloads-and-a-rat-that-vanishes-after-install/

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