【注意事項】
⚠ 本ブログに記載のコマンドや確認手順は、読者自身の環境における影響確認を支援する目的で提供している。組織の環境で実行する場合は、必ずシステム管理者またはセキュリティ管理者の許可を得ること。すべての操作は自己の責任において実施されたい。
【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日以降に、以下のいずれかを使用していないか?
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 をインストールしたtelnyx v4.87.1 または v4.87.2 をインストールしたaxios v1.14.1 または v0.30.4 をインストールした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 |
| 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を参照。
| 対象 | 影響バージョン/タグ | 安全なバージョン | 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時間) |
| telnyx | v4.87.1, v4.87.2 | v4.87.0 | 3/27 03:51 – ~10:13(約6.4時間) |
注意: LiteLLMは1日あたり約340万回ダウンロードされるパッケージであり、約3時間の曝露でも影響範囲は大きい(Snyk)
出典: Endor Labs、Snyk、FutureSearch(発見者)
注意: Telnyx Python SDKは月間70万以上ダウンロードのパッケージである。LiteLLM侵害(3/24)で窃取されたPyPIトークンを使用してアップロードされた疑いがある。技術詳細はセクション3を参照
出典: Telnyx Security Notice、Endor Labs、SafeDep
| 対象 | 影響バージョン | 安全なバージョン | 備考 |
|---|---|---|---|
| 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/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」ステータスのままスコアを割り当てていない。
出典: Tenable、GHSA-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-j8qg、CVETodo
| 対象 | 影響バージョン | 安全なバージョン | 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.1をnode_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
以下のハッシュは 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 による
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
⚠ 重要な注意: 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()vssetup()の大文字/小文字不一致)が含まれている。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攻撃はWAVオーディオステガノグラフィを使用してペイロードを配信する。C2サーバー 83.142.209.203:8080 から .wav ファイルをダウンロードし、オーディオフレームデータからXOR復号で実行ファイルを抽出する。
v4.87.1 または v4.87.2 をインストールしていた場合には、その環境を侵害済みとして扱うべきである。
出典: Telnyx Security Notice、SafeDep、Endor Labs、Socket.dev、Trend Micro
⚠ 重要な注意: axios v1.14.1 / v0.30.4 自体には悪意あるコードは含まれていないが、依存パッケージ
plain-crypto-js@4.2.1のpostinstallフックが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
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確認コマンド:
| 対象 | 安全なバージョン |
|---|---|
| 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-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を設定し、許可リスト外のドメインへの通信をブロックしていれば、窃取を阻止できた可能性がある。
GitHubはオーガニゼーション・エンタープライズ・リポジトリの各レベルで、全Actionsに対してフルコミットSHAでのピンニングを強制するポリシーを提供している。Settings → Actions → General の「Policies」セクションで「Require actions to be pinned to a full-length commit SHA」を有効にすると、SHAピンニングされていないActionを参照するワークフローは実行時にブロックされる。
既存のワークフローを手作業で書き換えるのは現実的ではない。pinact を使用すると、ワークフロー内のタグ参照をフルコミットSHAに一括変換できる。
インストール:
⚠ 以下のコマンドを実行する前に、必ず組織のセキュリティ管理者またはインフラ管理者の許可を得ること。外部バイナリの導入はセキュリティポリシーに抵触する場合がある。
その他のインストール方法や、GitHub Releasesからのバイナリ直接ダウンロードについては INSTALL.md を参照。
実行(リポジトリのルートで):
Before(タグ参照 — force-pushで改ざん可能):
After(pinact実行後 — SHAピンニング、元のバージョンはコメントで保持):
pinactはタグと同一SHAを持つsemverバージョンを自動解決する(例: v4 → v4.2.2)。semverではないブランチ参照(main 等)は安全のためスキップされる。
出典: pinact、GitHub Docs — Security hardening for GitHub Actions
本インシデントは、クレデンシャルローテーションの手順に不備があれば、ローテーションの効果が大幅に減殺されることを示した。対応にあたるユーザは、自組織のローテーションにおいても同様の問題が生じないよう留意する必要がある。
今回のインシデントで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はTeamPCPが自ら名乗るランサムウェア作戦名であり、Vectとの提携とは別にTeamPCPが独自に運営している。Wiz Threat CenterもTeamPCPの別名として追跡している。インシデントレスポンス企業による公式命名はなされていない |
| 手法 | CI/CDパイプラインの侵害、サプライチェーン攻撃、自己増殖型ワーム、ランサムウェア、クリプトマイニング |
| 特徴 | 各攻撃で窃取したクレデンシャルを次の標的に活用する連鎖型攻撃パターン。セキュリティツール(脆弱性スキャナ、IaCスキャナ、LLMプロキシ)を選択的に標的とする |
| 関連脅威プロファイル | Wiz Threat Profile, Cyble, Flare |
Mandiantによれば、本攻撃の背後にいるグループは主に米国、カナダ、英国に拠点を置く複数の脅威グループと連携しており、「非常に積極的な恐喝」で知られるとのことである。
【3/31 更新】 3/25以降、以下の動きが報告されている。
- TeamPCPがランサムウェアグループ「Vect」と提携し、窃取クレデンシャルを用いた恐喝活動を開始したとされる(Socket、SANS ISC)
- TeamPCPが独自のランサムウェア「CipherForce」を運用しているとの報告がある(SANS ISC Update 004)
- LAPSUS$がTeamPCP由来のクレデンシャルを用いたとされるAstraZenecaの侵害を主張している(SANS ISC Update 004、Hackread)
本ブログは影響確認を目的としているため、攻撃者の詳細な分析については上記の各ソースを参照されたい。
【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を参照。
| 情報源 | 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 |
| 情報源 | 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 |
| 情報源 | 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 |
| 情報源 | 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/ |
本記事は今後の情報に基づき更新される可能性がある。最新情報は本ブログおよび上記の公式ソースを参照されたい。