本文へスキップ
>_ITDITDセキュリティ対策プラットフォーム

セキュリティ対策

脆弱性スキャナ自体が入口になった——Trivyのサプライチェーン侵害でCIの利用者がやること

2026年3月19〜20日、Trivy v0.69.4の不正なリリースと、trivy-action・setup-trivyのタグの書き換えが起き、CIの秘密情報が狙われました。Aqua Securityの公式発表をもとに、影響を受けた版と時間帯、ローテーション、SHA固定と最小権限の見直しを整理します。

公開日 2026-09-30 更新日 2026-09-30 最終確認 2026-09-30 24分で読める

対象:GitHub ActionsなどのCIで、Trivy(コンテナイメージや依存関係の脆弱性スキャナ)、aquasecurity/trivy-action、aquasecurity/setup-trivy を使っている人。Trivyのバイナリやコンテナイメージを手元やサーバーで使っている人。本記事はAqua Securityの公式発表と、Trivyのセキュリティアドバイザリにもとづく解説で、攻撃の手順や侵害の痕跡(IoC)の値は扱いません。

CIの利用者が今日やること

1

該当する時間帯に、Trivy関連のワークフローが動いたかを確かめる

Aquaは、2026年3月19〜20日のワークフローの実行記録を確認するよう求めています。アドバイザリが示す時間帯(UTC、カッコ内は日本時間)は次のとおりです。trivy-action:3月19日17:43ごろ〜3月20日5:40ごろ(3月20日2:43〜14:40)。setup-trivy:3月19日17:43ごろ〜21:44ごろ(3月20日2:43〜6:44)。Trivy v0.69.4:3月19日18:22〜21:42ごろ(3月20日3:22〜6:42)。Docker Hubのイメージv0.69.5・v0.69.6:3月22日15:43〜3月23日1:40ごろ(3月23日0:43〜10:40)。GitHubの組織全体でワークフローが多い場合は、aquasecurity/trivy-action と aquasecurity/setup-trivy を参照しているワークフローを検索し、その実行履歴を時間帯で絞ります。

2

参照のしかたで、影響を受けたかを判定する

アドバイザリの判定は、版の番号より「どう参照していたか」で決まります。
trivy-action:影響あり=0.35.0以外のタグ(0.0.1〜0.34.2)で参照/時間帯に version: latest を明示していた/2025年4月9日より前のコミットにSHAで固定していた。影響なし=0.35.0のタグ/2025年4月9日以降の安全なコミットへのSHA固定。
setup-trivy:影響あり=SHAで固定していなかった場合すべて。影響なし=安全なコミットへのSHA固定。
Trivy本体:影響あり=v0.69.4(期間中の latest を含む。GitHub、deb、rpm、get.trivy.dev、GHCR、ECR Public、Docker Hub)とDocker Hubのv0.69.5・v0.69.6。影響なし=v0.69.3以前/ダイジェストで指定したイメージ/ソースからのビルド/Homebrewの公式フォーミュラ。

3

該当したら、そのジョブから読めた秘密をすべてローテーションする

Aquaは、該当する版が動いた可能性が少しでもあるなら、そのパイプラインから読めた秘密情報をすべて漏れたものとして扱うよう求めています。対象は、クラウド(AWS、GCP、Azure)の認証情報、Gitの認証情報、コンテナレジストリの認証情報、SSH鍵、Kubernetesのトークン、環境変数などの自動化用の秘密です。npmの公開用トークンは「実際に悪用されているもの」として扱うよう求めており、盗まれたトークンがnpmでの不正な拡散に使われているとしています。自分で管理するランナー(セルフホスト)の場合は、ランナーの上に置かれていたデータベースの認証情報、TLSの秘密鍵、VPNの設定なども対象として挙げられています。

4

ローテーションは「全部止める → 一斉に発行し直す」の順で

これはTrivy自身の原因から引き出した手順です。Aquaによれば、3月1日のローテーションは一斉に行われず、数日にわたる入れ替えの間に、有効なままのトークンで新しい秘密まで持ち出された可能性があります。対象の秘密を洗い出したら、まず古い鍵をまとめて無効化し、そのあとで新しい鍵を発行します。1本ずつ入れ替えると、まだ有効な古い鍵で、新しく入れた鍵を読まれる余地が残ります。サービスが一時止まる代償は、短い時間の停止として計画に入れてください。

5

組織のGitHubとTrivyを動かした端末を、アドバイザリの確認項目で点検する

Aquaは、持ち出しの代わりの経路が使われた場合に組織のGitHubアカウントに作られるリポジトリと、CIの外(開発者の端末など)でv0.69.4を動かした場合に端末に残るファイルを、確認項目として公表しています。該当する人は、下の出典にあるAquaの発表とアドバイザリの確認項目に沿って点検してください(本記事では痕跡の値は転載しません)。

6

安全な版に切り替える

Aquaが示す安全な版は、Trivy v0.69.2・v0.69.3、trivy-action v0.35.0、setup-trivy v0.2.6です。アドバイザリによれば、trivy-actionの古いタグ(0.0.1〜0.34.2)は削除され、同じ名前では作り直せないため、頭に v を付けたタグ(例:v0.34.0)で元の正規のコミットを指すように公開し直されています(一部のタグは未復元)。古い版を使い続けている場合は参照を書き換える必要があります。

CIの設定で見直すこと

アクションをコミットのSHAで固定する、という基本は TanStack・Nx Console・GitHubの連鎖 でも扱いました。ここでは、Trivyの事案で新しく分かった点に絞ります。

1

SHAで固定したアクションが、中で何をタグで呼んでいるかを見る

アドバイザリによれば、trivy-actionは2025年4月9日のプルリクエストで、中で使う部品の参照をSHA固定に変えました。それより前のコミットにtrivy-actionを固定していた人は、trivy-action自体は安全でも、その中でタグで呼ばれるsetup-trivyが不正な版になっていました。複数の部品を組み合わせるアクション(composite action)を使っている場合は、固定したコミットの action.yml を開き、中の uses: がSHAで固定されているかを確認します。固定されていなければ、より新しいコミットに上げるか、中の部品を自分のワークフローで直接SHA固定して呼ぶ方法を検討してください。

2

SHA固定を「お願い」ではなく組織の方針で強制する

GitHubは2025年8月、許可するアクションの方針にSHAでの固定を必須にする設定を加えました。企業・組織・リポジトリの単位で設定でき、SHAで固定していないアクションを使うワークフローは失敗します。同じ方針で、特定のアクションや版をブロックすることもできます。今回のような事案が起きたとき、該当する版を組織全体で止める手段にもなります。

3

「Immutable」の表示だけを頼りにしない

アドバイザリによれば、Trivy v0.69.3とtrivy-action 0.35.0は、公開前にGitHubの「変更できないリリース(immutable releases)」を有効にしていたため書き換えを免れました。一方でAquaは、書き換えられたタグの横にも「Immutable」の表示が出ていたとし、表示だけに頼らず、完全なコミットSHAでの固定が確実な守りだとしています。表示は、そのリリースを公開した時点の状態を示すにすぎません。

4

バイナリは版を固定して署名を確かめ、イメージはダイジェストで指定する

アドバイザリでは、ダイジェスト(@sha256:…)で指定したイメージは影響を受けていません。latest や版番号のタグだけで取得していると、公開期間中に不正な版を取り込みます。Trivyのアドバイザリは、Sigstoreの署名と署名の時刻でバイナリやイメージを検証する手順も示しています。CIで取得するツールは、版を明示し、可能ならダイジェストかチェックサムで固定します。

5

スキャナは、デプロイ用の秘密を持たないジョブで動かす

Aquaによれば、不正なコードは正規のスキャンより先に動き、スキャンの結果はふだんどおりに見えたため、利用者が気づきにくいものでした。スキャンそのものに、クラウドやレジストリへの書き込み権限はふつう要りません。スキャンは、デプロイ用の秘密を渡さない別のジョブで動かし、permissions: は読み取りだけにします。Aquaによれば、代わりの持ち出し経路は個人のアクセストークン(PAT)がワークフローに渡されている場合にだけ働き、既定の GITHUB_TOKEN では失敗するものでした。スキャンのステップに個人のトークンを渡していないかも確認してください。

何が起きたのか(Aqua Securityの発表より)

以下はすべて、Aqua Securityの発表(3月22日の初回投稿と、4月1日までの更新)とTrivyのセキュリティアドバイザリに書かれた内容です。時刻はUTCです。

  1. 2026年2月下旬

    TrivyのGitHub Actionsの設定の不備を突かれ、権限の強いアクセストークンが持ち出される。
  2. 3月1日

    Trivyのチームがこの侵害を公表し、認証情報をローテーション。Aquaによれば、このローテーションは一斉ではなく、攻撃者は有効なままの認証情報でアクセスを保った。
  3. 3月19日 17:43ごろ

    trivy-actionの77タグ中76、setup-trivyの全7タグが不正なコミットに書き換えられる。同時に、侵害されたサービスアカウントからリリースの仕組みが動かされ、不正なTrivy v0.69.4が公開される(配布開始は18:22)。
  4. 3月19日 20:38ごろ

    Trivyのチームが検知し、封じ込め。配布経路から不正な成果物を削除。
  5. 3月20日

    安全な版、利用者向けの案内、侵害の痕跡を公表。
  6. 3月21日

    セキュリティアドバイザリ GHSA-69fq-xp46-6x23(CVE-2026-33634)を公開。
  7. 3月22日

    Docker Hubに不正なイメージv0.69.5・v0.69.6が公開される(別に侵害されたDocker Hubの認証情報による)。同日、Aquaの社内リポジトリが無断でGitHubに公開される。Aquaは、最初の封じ込めのあとに攻撃者がアクセスを取り戻していたと説明。
  8. 3月23日

    Aquaが外部のインシデント対応企業を調査に加える。Aquaの別のスキャナKICSのGitHub Actionでも並行した侵害が確認される。
  9. 4月1日

    Aquaが、調査はほぼ完了し、商用製品が影響を受けた兆候は引き続きないと更新。
76 / 77
書き換えられたtrivy-actionのタグ(0.35.0のみ無事)
7 / 7
書き換えられたsetup-trivyのタグ
約12時間
trivy-actionのタグが書き換えられていた時間(アドバイザリ)
影響の兆候なし
Aqua Platform内のTrivyを含む商用製品(Aquaの発表)
Aqua Securityが公表した内容
影響を受けたもの
Trivy v0.69.4(バイナリ、deb/rpm、コンテナイメージ)、Docker Hubのv0.69.5・v0.69.6、trivy-actionの0.35.0以外のタグ、setup-trivyの全タグ
不正なコードの動き
CIの実行環境や端末から、クラウド、SSH、Kubernetes、Docker、Git、データベースなどの認証情報や .env を集め、暗号化して外部に送る。正規のスキャンより先に動くため、結果はふだんどおりに見えた
原因
2月下旬にGitHub Actionsの設定の不備から権限の強いトークンが持ち出され、3月1日のローテーションが一斉でなかったため、アクセスが保たれた
Aquaの対応
全配布経路から不正な成果物を削除、書き換えられたタグを削除または安全なコミットに付け替え、オープンソース組織の自動化・サービスアカウント・トークンを全面的に停止、長期間有効なトークンへの依存を減らす、変更できないリリースと来歴の証明を導入
影響がないとしたもの
Aqua Platform内のTrivyを含む商用製品(GitHubと分離した基盤で、秘密情報や署名の仕組みを共有していないため)

読み方の注意:被害の件数は公表されていない

Aquaは、Trivyはオープンソースのため利用者を網羅した記録を持たず、全員に直接知らせる手段がないとしています。影響を受けた組織の数は公表されておらず、当サイトは推測の数字を載せません。また、Aquaの発表は攻撃した側の呼び名や、分析に協力した外部企業の名前を挙げていますが、当サイトの方針として、被害を公表した組織以外の名前は載せていません。判断は、件数ではなく「自分のワークフローが該当する時間帯に、該当する参照のしかたで動いたか」で行ってください。

どこで止められたか

① 2月下旬〜3月1日

トークン流出。ローテーションが数日がかりに

↓

教訓(自分の組織で)

全部止めてから一斉に発行し直す

② 3月19日 タグの書き換え

同じタグ名が不正なコミットを指す

↓

止め所

SHA固定(方針で強制)+中の部品も固定

③ 不正なv0.69.4と latest

正規の配布経路すべてに載る

↓

止め所

版の明示、ダイジェスト指定、署名の確認

④ あなたのCIのジョブ

スキャンの前に秘密が集められる

↓

被害を小さくする

スキャンのジョブに秘密と個人トークンを渡さない

Aqua Securityの発表とアドバイザリから組み立てた経路。各段の右側は、利用者の側で被害を止めたり小さくしたりできた設定。

影響を受けた参照のしかた(アドバイザリより)

  • trivy-action@0.34.2 などのタグ参照(0.35.0以外)
  • version: latest の明示(Trivy本体の公開期間中)
  • 2025年4月9日より前のコミットへのSHA固定(中のsetup-trivyがタグ参照)
  • setup-trivy のSHA固定なしの参照すべて
  • イメージの latest・0.69.4 などのタグ指定

影響を受けなかった参照のしかた

  • trivy-action@0.35.0(公開前から変更できないリリースが有効)
  • 2025年4月9日以降の安全なコミットへのSHA固定
  • setup-trivy の安全なコミットへのSHA固定
  • イメージのダイジェスト指定
  • Trivy v0.69.3以前、ソースからのビルド、Homebrewの公式フォーミュラ

当サイトの視点:ローテーションは「作業」ではなく「封じ込め」

漏れた鍵のローテーションは、ふつう「影響の少ない順に、1本ずつ、サービスを止めずに」行います。止めずに済むのは利点ですが、今回のTrivyの事案は、その進め方が攻撃者がまだ中にいる状況では封じ込めにならないことを示しました。Aquaによれば、数日にわたる入れ替えの間に、有効なままのトークンで新しく入れた秘密まで持ち出された可能性があり、それが3週間後の不正なリリースにつながりました。

侵害が疑われるときのローテーションは、①どの鍵がどこから読めたかを先に全部洗い出す、②古い鍵をまとめて無効化する、③そのあとで新しい鍵を発行する、④古い鍵が本当に使えないことを確かめる、の順で行います。短い停止は計画に入れてください。平常時の入れ替え(止めずに新旧を並べる方式)は、漏れていないことが前提の手順です。

もう1つ。脆弱性スキャナは「守りの道具」なので、CIの中で最も多くの場所に、最も広い権限で置かれがちです。守りの道具ほど、秘密から遠い場所で動かしてください。

出典(公開記録)

本記事の事実関係は、以下の公開情報にもとづきます。攻撃の手順や、侵害の痕跡(IoC)の値、攻撃した側を特定する情報は扱っていません。

  • Aqua Security「Trivy Supply Chain Attack: What You Need to Know」(2026年3月22日初回投稿、4月1日更新) — aquasec.com
  • Trivy セキュリティアドバイザリ「Trivy ecosystem supply chain temporarily compromised」GHSA-69fq-xp46-6x23(CVE-2026-33634、3月21日公開、3月30日更新) — github.com
  • Trivy「Trivy Security incident 2026-03-19」(GitHub Discussions、Trivyのチームによる経過報告) — github.com
  • GitHub Changelog「GitHub Actions policy now supports blocking and SHA pinning actions」(2025年8月15日) — github.blog
  • GitHub Docs「Secure use reference」(サードパーティのアクションの使い方) — docs.github.com

更新履歴

2026-09-30:初版。Aqua Securityの発表(4月1日更新版)と、Trivyのセキュリティアドバイザリ(3月30日更新版)にもとづく。

次に読む

よくある質問

QTrivyのどのバージョンが影響を受けたのですか?
A

TrivyのセキュリティアドバイザリGHSA-69fq-xp46-6x23(CVE-2026-33634)によれば、影響を受けたのはTrivy v0.69.4(GitHub、deb、rpm、get.trivy.devで配布されたバイナリと、GHCR、ECR Public、Docker Hubのコンテナイメージ。公開期間中はlatestタグもこれを指していた)と、Docker Hubに公開されたコンテナイメージv0.69.5とv0.69.6です。v0.69.3以前、ダイジェストで指定したイメージ、ソースからビルドしたバイナリ、Homebrewの公式フォーミュラは影響を受けていません。

Qtrivy-actionを使っていましたが、影響はありますか?
A

アドバイザリによれば、0.35.0以外のタグ(0.0.1〜0.34.2)で参照していた場合、Trivyバイナリの公開期間中に明示的にversion: latestを指定していた場合、2025年4月9日より前のコミットにSHAで固定していた場合が影響を受けます。0.35.0のタグと、2025年4月9日以降の安全なコミットへのSHA固定は影響を受けていません。書き換えられていた時間帯は2026年3月19日17:43ごろ〜3月20日5:40ごろ(UTC)です。

Qsetup-trivyを使っていましたが、影響はありますか?
A

アドバイザリによれば、SHAで固定していなかった場合はすべて影響を受けます。全7タグ(v0.2.0〜v0.2.6)が不正なコミットに書き換えられ、時間帯は3月19日17:43ごろ〜21:44ごろ(UTC)です。安全なコミットにSHAで固定していた場合は影響を受けていません。v0.2.6は安全な内容で作り直されています。

Q該当していたら何をすればいいですか?
A

Aquaは、該当する版が動いた可能性が少しでもあるなら、そのパイプラインから読めた秘密情報をすべて漏れたものとして扱い、直ちにローテーションするよう求めています。対象は、クラウド(AWS、GCP、Azure)の認証情報、Gitの認証情報、コンテナレジストリの認証情報、SSH鍵、Kubernetesのトークン、環境変数などで、npmの公開用トークンは実際に悪用されているものとして扱うよう求めています。

Q原因は何ですか?
A

Aquaの発表によれば、2026年2月下旬、TrivyのGitHub Actionsの設定の不備を突かれて、権限の強いアクセストークンが持ち出されました。3月1日に公表して認証情報をローテーションしましたが、一斉には行われず(数日にわたった)、攻撃者は有効なままのトークンで新しい秘密情報も入手できた可能性があります。これにより3月19日の不正なリリースが可能になったとしています。

QAqua Securityの商用製品は影響を受けましたか?
A

Aquaは、Aqua Platformに組み込まれたTrivyを含め、商用製品が影響を受けた兆候はないとしています。商用製品はGitHubとは別に構築・運用され、リポジトリ、CI/CDの基盤、秘密情報、署名の仕組みを共有しておらず、オープンソース版の取り込みにはセキュリティのレビューを挟んでいるためと説明しています。この説明は、オープンソースのTrivyを直接使っている場合には当てはまりません。