Aqua SecurityとTrivyメンテナーは2026年3月19日、Trivyエコシステムに対するソフトウェア サプライチェーン攻撃を公表しました。今回の事案では、攻撃者が侵害済みの認証情報を使って、悪性の Trivy v0.69.4 を公開したほか、GitHub Actions の aquasecurity/trivy-action の77タグ中76タグ、aquasecurity/setup-trivy の全7タグを悪性コミットへ差し替えました。GitHubの公式アドバイザリでは、この事案を Critical と位置付けています。
概要
今回の攻撃は、単一バージョンの汚染にとどまらず、Trivy本体と、その導入や実行を自動化するGitHub Actionsの両方を巻き込んだ供給網攻撃でした。
GitHubのセキュリティアドバイザリによると、攻撃者は悪性の Trivy v0.69.4 を公開し、さらに trivy-action の多数タグと setup-trivy の全タグを悪性コミットへ強制的に差し替えました。これにより、タグ指定でTrivyを使っていたCI/CDパイプラインは、見た目上は通常のTrivy実行に見えても、実際には改ざん済みコードを実行していた可能性があります。
Aquaの説明では、悪性の Trivy v0.69.4 は2026年3月19日18時22分UTCごろから約3時間流通し、trivy-action は同日17時43分UTCごろから翌20日5時40分UTCごろまで、setup-trivy は同日17時43分UTCごろから約4時間、影響を受けていました。
つまり、短時間であっても、CI/CDやローカル環境で自動的に取り込む構成であれば、実際の影響を受ける条件は十分にそろっていました。
対策
最優先は、安全版への切り替えです。
AquaとGitHubの案内では、Trivy本体は v0.69.2 または v0.69.3、trivy-action は v0.35.0、setup-trivy は v0.2.6 が安全版です。Trivy v0.69.4 を取得、実行、配布していた環境では、直ちに削除と置き換えが必要です。
次に、3月19日から20日にかけて影響対象のタグや悪性版を実行した可能性があるなら、当該パイプラインや実行環境で参照可能だった全シークレットを即時ローテーションする必要があります。
Aquaは、ネットワーク境界で scan[.]aquasecurtiy[.]org と IP 45.148.10.212 を遮断すること、GitHub組織内に tpcp-docs リポジトリが作成されていないかを確認することも勧告しています。
さらに再発防止として重要なのは、GitHub ActionsをタグではなくフルSHAで固定することです。GitHubのアドバイザリも、可変タグではなく不変のコミットSHAへピン留めする運用を推奨しています。今回のようにタグそのものが乗っ取られると、バージョン表記だけでは安全性を担保できません。
原因
GitHubのアドバイザリとAquaの説明では、今回の事案は3月1日に公表された先行インシデントの延長線上にあります。
2月下旬、攻撃者はTrivyのGitHub Actions環境の設定不備を悪用して特権トークンを奪取し、その後の3月1日対応で資格情報のローテーションは行われたものの、失効と再発行が完全 ではありませんでした。そのため、攻撃者が再発行後の有効な認証情報へ再び到達できた可能性があるとされています。
Aquaは、この不完全な封じ込めが、3月19日の再侵害を許したと説明しています。
つまり、今回の攻撃はゼロからの新規侵入ではなく、残念ながらいったん奪われたCI/CD周辺の資格情報が完全に断ち切れていなかったことが背景にあります。
どこが改ざんされたのか
公式情報で影響対象として明示されているのは、Trivyバイナリの v0.69.4、GitHub Action の aquasecurity/trivy-action 0.0.1 から 0.34.2 までの76タグ、そして aquasecurity/setup-trivy の全7タグです。GitHubのアドバイザリでは、安全な版として Trivy は v0.69.2 または v0.69.3、trivy-action は v0.35.0、setup-trivy は v0.2.6 が案内されています。
とくに問題が大きいのは、ブランチやコミットSHAではなくタグ参照でGitHub Actionsを利用していたケースです。
Aquaは、今回の攻撃者が既存タグを悪性コミットへ強制的に付け替えたため、CI設定ファイル上は従来と同じバージョンを参照しているように見えても、実際の実行内容は改ざんされていたと説明しています。Socketも、GitHub上で1万件超のワークフローが trivy-action を参照しており、影響範囲が広いと分析しています。
外部調査で見えた攻撃の実態
Socketの調査によると、悪性コードはGitHub Actionsランナー上でまず Runner.Worker などのプロセスを探索し、/proc 配下から環境変数や関連ファイルを収集していました。さらにGitHubホスト型Linuxランナーでは、sudo を利用して Runner.Worker のメモリを /proc/<pid>/mem から読み出し、内部に保持されているシークレットを直接抜き出す手口も確認されたとしています。これは単なる環境変数窃取より一段深く、ランナーのプロセスヒープ内に存在するシークレットまで狙う動きです。
収集した情報は、AES-256-CBC と RSA-4096 を組み合わせた方式で暗号化され、scan.aquasecurtiy[.]org というタイポスクワットドメインへ送信されていたとSocketは分析しています。さらに送信に失敗した場合、被害者のGitHubアカウント上に tpcp-docs という公開リポジトリを自動作成し、暗号化済みデータをリリースアセットとしてアップロードするフォールバックも実装されていたとしています。GitHubのアドバイザリでも、この tpcp-docs リポジトリの有無を確認すべきIOCとして挙げています。
OpenSourceMalwareと外部コミュニティの見立て
外部のコミュニティ脅威インテリジェンスでも、今回の攻撃は CI/CD 向けのインフォスティーラーとして評価されています。
OpenSourceMalwareでは、攻撃者が aquasecurtiy[.]org という類似ドメインを使い、GitHub Actions とトロイ化された Trivy バイナリの双方から認証情報を収集していたと報告されています。OpenSourceMalwareは、AWS、GCP、Azure、Kubernetesトークン、SSH鍵、暗号資産ウォレットなど50以上の機微パスを探索対象としていたと説明しています。







