【DevSecOps】Trivy 侵害から学ぶ大規模サプライチェーン攻撃の全容と CI/CD 防衛策

  • URLをコピーしました!
目次

はじめに

2026 年 3 月、オープンソースのコンテナセキュリティスキャナである Trivy の開発環境が侵害され、悪意のあるコードが混入されたバージョンが配布されるという重大なサプライチェーン攻撃(CVE-2026-33634)が発生しました。

最近、npm パッケージや Python パッケージ(LiteLLM)、他のセキュリティツールで相次いで報告されている大規模な侵害事件は、すべてこの Trivy のインシデントで窃取された CI/CD の認証情報が発端(真の起点)となっています。

本記事では、TeamPCP と呼ばれる脅威アクターによる Trivy 侵害のタイムラインと巧妙な手口を客観的に解説し、CI/CD パイプラインを運用するインフラエンジニアが直ちに実施すべきバージョンタグの監査と不変のコミット SHA へのピン留めなどの防御策について整理します。

この記事でわかること
  • TeamPCP による Trivy 侵害のタイムラインとインシデントの根本原因
  • バージョンタグ(Mutable Tag)の強制上書きによるパイプライン乗っ取りの手口
  • 窃取された NPM トークン等によるエコシステム全体への二次的被害の波及
  • インフラエンジニアが直ちに実施すべき監査手順と CI/CD の根本的な防御策

TeamPCP による Trivy 侵害のタイムラインと根本原因

今回のインシデントは、単一の突破口から始まり、初動対応の不備を突いて数週間後に大規模な攻撃へと発展しました。

GitHub Actions 環境の設定ミスによる特権アクセストークンの漏洩

攻撃の起点となったのは 2026 年 2 月下旬です。攻撃者は Trivy の GitHub Actions 環境における設定ミスを悪用し、リポジトリの自動化やリリースプロセスにアクセスできる特権アクセストークンを抽出して、環境内への最初の足場を確立しました。

不完全だった初動の認証情報ローテーションと残留アクセスの悪用

Trivy チームはこの初期侵害を 3 月 1 日に検知し、ただちに認証情報のローテーション(無効化と再発行)を実施しました。しかし、その後の調査で、この初動対応が不十分であったことが判明しています。

参考: Aqua Security Update
“Subsequent investigation revealed the rotation was not fully comprehensive, allowing the threat actor to retain residual access via still-valid credentials.”
(その後の調査で、ローテーションが完全に網羅的なものではなく、脅威アクターがまだ有効な認証情報を介して残留アクセスを維持できていたことが判明しました。)
https://www.aquasec.com/blog/trivy-supply-chain-attack-what-you-need-to-know/

攻撃者はこの残されたアクセス権を密かに悪用し続け、3 月 19 日に侵害したサービスアカウント(aqua-bot)をトリガーして、悪意のある Trivy バイナリ(v0.69.4)を公式の配信チャネルへ公開しました。

一度漏洩した認証情報は、すべてのトークンとサービスアカウントを網羅的かつ完全に無効化(アトミックなリセット)しない限り、攻撃者に再侵入の隙を与えてしまうという CI/CD セキュリティの厳しさが浮き彫りになっています。

バージョンタグ(Mutable Tag)書き換えによるパイプラインの乗っ取り

攻撃者は、新しい不審なバージョンを公開するだけでなく、すでに多くのユーザーが利用している既存のバージョンタグを上書きする(Force-push)という極めて巧妙な手法を採用しました。

trivy-action のバージョンタグ強制上書きによる悪意あるコードの注入

aquasecurity/trivy-action リポジトリにある 77 個のバージョンタグのうち、イミュータブル(不変)な設定がされていた v0.35.0 を除く 76 個のタグが、悪意のあるコミットへ強制的に書き換えられました。

参考: Aqua Security Update
“By modifying existing version tags associated with trivy-action, they injected malicious code into workflows that organizations were already running. Because many CI/CD pipelines rely on version tags rather than pinned commits, these pipelines continued to execute without any indication that the underlying code had changed.”
(trivy-action に関連付けられた既存のバージョンタグを変更することで、組織がすでに実行しているワークフローに悪意のあるコードを挿入しました。多くの CI/CD パイプラインは固定されたコミットではなくバージョンタグに依存しているため、これらのパイプラインは基礎となるコードが変更されたことを示すことなく実行され続けました。)
https://www.aquasec.com/blog/trivy-supply-chain-attack-what-you-need-to-know/

CI/CD パイプラインの設定ファイル(YAML)で @v0.28.0 などの動的なタグ(Mutable Tag)を指定していた組織は、設定を一切変更していないにもかかわらず、裏側で密かに悪意のあるコードを実行させられる状態に陥りました。

スキャン実行前にシークレットを窃取するサイレントなデータ持ち出し

さらに厄介なことに、パイプライン上で実行された悪意のあるペイロードは、正規の Trivy スキャン処理が開始される前に動作するように設計されていました。

そのため、AWS や GCP などのクラウド認証情報、GitHub トークン、Kubernetes トークンといった環境変数内のシークレットを外部(C2 サーバーや tpcp-docs リポジトリ)へ密かに送信しながらも、表面上のセキュリティスキャン自体はエラーを出さずに正常終了しているように見せかけていました。

窃取された NPM トークン等によるエコシステム全体への波及

この単一のオープンソースプロジェクトの侵害は、結果として世界中のソフトウェアサプライチェーン全体を揺るがす事態に発展しました。

商用環境(Aqua Platform)への影響とオープンソース版の被害状況

まず前提として、開発元である Aqua Security が提供する商用製品(Aqua Platform)は、オープンソース環境からアーキテクチャ的に完全に分離されており、今回のインシデントの影響を受けていません。

参考: Aqua Security Update
“There is no indication that Aqua Security’s commercial products were impacted by this incident, including Trivy as delivered within the Aqua Platform.”
(Aqua Platform 内で提供される Trivy を含め、Aqua Security の商用製品がこのインシデントの影響を受けたという兆候はありません。)
https://www.aquasec.com/blog/trivy-supply-chain-attack-what-you-need-to-know/

被害を受けたのは、GitHub Actions や Docker Hub 等を通じて、オープンソース版の Trivy コンポーネントを直接パイプラインに組み込んでいた世界中の組織です。

単一の侵害から NPM エコシステムなどへの二次的・三次的な攻撃展開

今回の攻撃の最大の脅威は、Trivy を踏み台にして窃取された膨大な数の認証情報が、即座に次の攻撃(兵器化)へ転用された点にあります。

公式アップデートにおいても、Trivy の実行環境から盗まれた NPM のパブリッシュトークンが積極的に悪用され、NPM エコシステム全体にマルウェアを伝播させていることが強く警告されています。 また、この一連のトークン群を利用して、Python パッケージ(LiteLLM)や他のセキュリティツール(Checkmarx)へも連鎖的にバックドアが仕掛けられており、CI/CD パイプラインの単一障害点がエコシステム全体のセキュリティ崩壊を招く危険性を実証する結果となりました。

インフラエンジニアが直ちに実施すべき監査と根本的な防御策

Trivy のような広く信頼されているセキュリティツールであっても、サプライチェーン攻撃の標的となるリスクが浮き彫りになりました。開発・インフラチームは、既存のパイプライン設定を直ちに見直す必要があります。

影響を受けるバージョン(v0.69.4 等)の監査と全シークレットのローテーション

まずは自社の CI/CD 環境において、2026 年 3 月 19 日から 20 日にかけて Trivy v0.69.4 や、上書きされた trivy-action を実行した履歴がないかを監査してください。

もし該当期間にこれらのアクションが実行されていた場合、パイプラインからアクセス可能だったすべてのシークレットが漏洩したと見なす必要があります。AWS や GCP のクラウドアカウント、コンテナレジストリの認証情報、NPM のパブリッシュトークン、SSH キーなどを直ちにローテーション(無効化して再発行)するインシデント対応を徹底してください。

不変のコミット SHA(Immutable Commit SHA)へのピン留めによる長期的な保護

今回の攻撃がこれほど広範囲に成功した最大の理由は、多くの組織が GitHub Actions を呼び出す際に、動的に上書き可能なバージョンタグ(@v1@v0.28.0 など)を利用していたためです。

参考: Aqua Security Update
“Pin GitHub Actions to full, immutable commit SHA hashes — not mutable version tags. Version tags can be moved to point at malicious commits, as demonstrated in this attack.”
(GitHub Actions を、変更可能なバージョンタグではなく、完全で不変なコミット SHA ハッシュにピン留めしてください。この攻撃で実証されたように、バージョンタグは悪意のあるコミットを指すように移動される可能性があります。)
https://www.aquasec.com/blog/trivy-supply-chain-attack-what-you-need-to-know/

CI/CD パイプラインの完全性を保護するための長期的なベストプラクティスとして、サードパーティの GitHub Actions を利用する際は、必ず 40 桁の完全なコミット SHA(Immutable Commit SHA)を指定してピン留めする構成へ移行してください。これにより、将来的にリポジトリのタグが悪意を持って書き換えられたとしても、不正なコードがパイプラインに混入することを物理的に防ぐことができます。

まとめ

本記事では、一連の大規模サプライチェーン攻撃の起点となった Trivy 侵害の全容と対策について解説しました。

  • Trivy 開発環境でのトークン漏洩が、一連の大規模なサプライチェーン攻撃の起点となった。
  • 攻撃者は既存のバージョンタグを強制上書きし、パイプラインからシークレットを窃取した。
  • 盗まれた NPM トークン等が即座に兵器化され、エコシステム全体へ二次被害が拡大している。
  • 影響範囲を監査し、GitHub Actions は必ず不変のコミット SHA へピン留めして利用する。

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次