採用情報 お問い合わせ

BLOG

脆弱性管理 BLOG

2026 年 04 月 13 日

OSS セキュリティスキャンツール Trivy にサイバー攻撃、侵入経路など攻撃の手口を徹底解説

~ 2026 年 3 月の脅威動向と代表的な攻撃(後編)~

前編「ハッカー集団「TeamPCP」による Trivy のセキュリティ侵害とサプライチェーン攻撃」はこちら

1-7. How(どのように)

Trivy の公式の情報から、侵入経路などの攻撃の情報を解説します。

1.1 攻撃の概要

2026 年 2 月下旬から攻撃が始まっていた模様です。2026/02/27 に攻撃者による最初の攻撃が始まりました。どうやら盗み出した認証情報(Personal Access Token: PAT。誰の認証情報がどこで盗まれたかは現時点では不明)を用いてログインと攻撃を開始した模様です。悪意のあるアドバイザリを作ったり、偽のレポジトリも作成していた模様です。攻撃者は下記のようなメッセージを残していたとのことです。

この行為は Trivy で検知されており、2026/03/01 に認証情報のローテーションが実施されました。

しかし、全ての認証情報が同時に失効したわけでは無かったため、攻撃者はこの隙間の時間を使って盗み出した認証情報を引き続き使用し、新たにローテーションされた機密情報を外部に持ち出すことができた模様です。この結果、攻撃者はアクセス権を維持して 2026/03/19 に攻撃を実行したと考えられています。

2026/03/19 に、TeamPCP は侵害された認証情報を使用して悪意のある Trivy v0.69.4 リリースを公開し、aquasecurity/trivy-action 中の 77 個のバージョンタグのうち 76 個を認証情報窃盗マルウェアに強制プッシュし、aquasecurity/setup-trivy 中の 7 個のタグを悪意のあるコミットに置き換えました。
2026/03/22 に、TeamPCP は侵害された認証情報を使用して悪意のある Trivy v0.69.5 および v0.69.6 の DockerHub イメージを公開しました。

1.2 タイムウィンドウ

問題があったコンポーネントと、置き換わっていた時間を Trivy 公式がまとめています。元々が UTC(協定世界時)時間だったので、下記の表は JST(日本標準時)に変更してあります。

コンポーネント Start (JST) End (JST) 間隔
trivy v0.69.4 2026/03/20 3:22 2026/03/20 6:22 約 3 時間
trivy-action 2026/03/20 2:43 2026/03/20 14:40 約 12 時間
setup-trivy 2026/03/20 2:43 2026/03/20 6:44 約 4 時間
dockerhub trivy images v0.69.5 / v0.69.6 2026/03/22 0:43 2026/03/22 15:44 約 10 時間
元データの Start か End の時間にミスがある模様
1.3 CVE など新たな脆弱性情報

Trivy では今回のインシデントに関して、CVE(Common Vulnerabilities and Exposures:共通脆弱性識別子)に登録を行っています。

1.4 攻撃の詳細
1.4.1 Trivy v0.69.4 バイナリおよびコンテナイメージ

攻撃者は以下の方法で悪意のあるリリースを作成しました。

  1. actions/checkout を下記のように(70379a)に置き換えるコミット(1885610c)をプッシュしました。

    このプッシュ(70379a)ですが、下記のようなダウンロードが付け加わっていました。

    よく見ると、「security」の部分が「securtiy」と "t" と "i" が入れ替わるタイポになっています。これはタイポスクワッティングという攻撃で、元のドメインのスペルミスを利用して悪意のあるドメインに接続させるものです。

    このタイポスクワッティングドメインから悪意のある Go ソースファイルをダウンロードするような処理が埋め込まれていました。

    既に C2 サーバが無くなってしまっているため、この悪意のある Go ソースファイルの詳細は分かりませんが、GitHub での議論による

    • main.go は実際の Trivy スキャナの前にマルウェアを起動
    • scand.go は認証情報を窃取
    • fork_unix.go/fork_windows.go は、それぞれのプラットフォームでの永続化を処理
      していた模様です。
  2. さらにコミット(885610c)では下記のようにバイナリ検証を回避するために、GoReleaser に --skip-validate オプションが付加されていました。

  3. GoReleaser が検証をスキップして実行されたため、この汚染されたソースからバイナリがビルドされ、ビルド時にマルウェアが埋め込まれた状態で、Trivy v0.69.4 として公開されました。

  4. 侵害されたリリースは、Trivy の通常の配布チャネルである GHCR、ECR Public、Docker Hub (0.69.4 および latest タグの両方 )、deb/rpm パッケージ、および get.trivy.dev を通じて配布されました。

  5. 攻撃者は v0.70.0 という悪意のあるバージョンをリリースしようとしたが、それは途中で阻止されました。

1.4.2 trivy-actionタグハイジャック

攻撃者は trivy-action の entrypoint.sh にインフォスティーラー(情報窃取マルウェア)を仕込んでいました。77 個のバージョンタグのうち 76 個を用いて作業を行っていた模様です。
変更部分が長いため、概略と図で解説します。

  1. Runner.Worker プロセスメモリをダンプして /proc/<pid> の情報を抽出します。

  2. /proc/<pid>/mem 以下の SSH キーや環境変数など、重要そうなものを盗み出します。

  3. 収集したデータを AES-256-CBC と RSA-4096 のハイブリッド暗号化方式で暗号化します。

  4. 攻撃者が管理するインフラストラクチャに送信します。データ漏洩が失敗し、INPUT_GITHUB_PAT かつ設定されている場合、被害者の GitHub アカウントに公開 tpcp-docs リポジトリを作成し、盗んだデータをリリースアセットとしてアップロードします。

1.4.3 trivy-actionの公式説明

既存の 7 つのタグ(v0.2.0~v0.2.6)すべてが、悪意のあるコミットに強制的にプッシュされました。約 4 時間以内にすべての悪意のあるリリースが削除され、安全な v0.2.6 が再作成されました。タグ v0.2.0~v0.2.5 は存在しなくなっています。

そのため、ここに何があったかはコードを読むことはできませんが、Trivy の公式の説明によると、悪意のある action.yaml には trivy-action と同じようにインフォスティーラーが含まれており、正規の Trivy インストールの前に実行される「環境設定」ステップとして挿入されていた模様です。

1.4.4 Trivy v0.69.5 / v0.69.6 docker イメージの公開

攻撃者は、aquasec/trivy:0.69.5 と aquasec/trivy:0.69.6 を v0.69.4 と同じ同じ C2 ドメインで作成し、GitHub 経由ではなく別途侵害された Docker Hub の認証情報を使用して直接 Docker Hub にプッシュしました。対応する GitHub タグやリリースは存在しませんでした。

1.5 修正方法

下記の「安全なバージョン」以上のバージョンに更新してください。

コンポーネント 安全なバージョン
Trivy binary v0.69.2, v0.69.3
trivy-action v0.35.0
setup-trivy v0.2.6

2. Trivy の波及

Trivy はさまざまなプロジェクトで「CI/CD パイプラインでセキュリティを担保する」ために使用されています。そのため今回の Trivy への「インフォスティーラー埋め込み」によって認証情報が盗まれているため、多くのプロジェクトが影響を受けています。2026/03/30 時点でわかっているものを下記に記載します。

  1. 多くの NPM パッケージが CanisterWorm により感染
    2026/03/20 にヨーロッパのサイバーセキュリティ企業である aikido が検知し、記事にしていますが、TeamPCP が NPM 上の多数のパッケージに新しいワーム「CanisterWorm」をばら撒いたようです。また、aikido の別の記事によるとによると、2026/03/21-2026/03/22 にこの CanisterWorm がアップデートされ、「kamikaze.sh」というペイロード(送信または受信されるデータの実質的な部分)が追加されています。これは標的がタイムゾーンや言語設定などでイランのマシンであると判断された場合、CanisterWorm はワイパーウェアの Kamikaze を作動させます。この Kamikaze は、Kubernetes が存在する場合には、クラスター内の全ノードをワイプする DaemonSet をデプロイし、Kubernetes が存在しない場合は、「rm -rf / -no-preserve-root」を実行してシステムデータを含むマシン上のすべてのデータを削除するという凶悪なものになっています。

  2. Checkmarx Github Actions へのサプライチェーン攻撃
    Sysdig のTeamPCP expands: Supply chain compromise spreads from Trivy to Checkmarx GitHub Actionsによると、Trivy 侵害の波及が Github Actions のいろいろなパッケージに及んでおり、Checkmarx のhttps://github.com/Checkmarx/ast-github-actionにも被害が波及しているそうです。
    TeamPCP が使用したものと全く同じインフォスティーラーが Checkmarx/ast-github-action を介して実行され、暗号化された秘密情報を漏洩させていたという調査結果が出ています。

  3. LiteLLM PyPI へのバックドア展開
    Endor Labs のブログにもありますが、TeamPCP が抜き出した認証情報を用いて PyPI で月間 9,500 万ダウンロードを記録した LiteLLM を攻撃した模様です。この LiteLLM にもインフォスティーラーが埋め込まれていたとのことです。

  4. Cisco のソースコード流出
    2026/04/05 時点では未だ詳細は不明ですが、BleepingComputerの記事にもある通り、Trivy から始まるサプライチェーン攻撃により盗まれた認証情報を使った攻撃者が Cisco 社の社内開発環境に侵入し、同社および顧客のソースコードを盗み出したという情報も入っています。

参考情報

  1. Trivy:Trivy ecosystem supply chain temporarily compromised
  2. Trivy Github:Trivy Security incident 2026-03-19 #10425
  3. Trivy Github:aquasecurity / trivy-action(Commit ddb9da4)
  4. Trivy Github:aquasecurity / setup-trivy
  5. Trivy Github Archive:https://web.archive.org/web/20260306133317/https://github.com/aquasecurity/trivy/discussions/10265
  6. aikido:TeamPCP deploys CanisterWorm on NPM following Trivy compromise
  7. aikido:CanisterWorm Gets Teeth: TeamPCP’s Kubernetes Wiper Targets Iran
  8. Wiz.io:Trivy Compromised: Everything You Need to Know about the Latest Supply Chain Attack
  9. Sysdig:TeamPCP expands: Supply chain compromise spreads from Trivy to Checkmarx GitHub Actions
  10. Checmarx:https://github.com/Checkmarx/ast-github-action
  11. EndorLabs: TeamPCP Isn’t Done: Threat Actor Behind Trivy and KICS Compromises Now Hits LiteLLM’s 95 Million Monthly Downloads on PyPI
この記事の著者

OSS/ セキュリティ / 脅威インテリジェンスエバンジェリスト
面 和毅

本記事に関連するリンク
MIRACLE Vul Hammer 脆弱性管理ツール「MIRACLE Vul Hammer(ミラクル・バル・ハンマー)」
SBOMを使った脆弱性管理を実現!MIRACLE Vul Hammer