セキュリティ20分で読める

Trivy GitHub Actionsにマルウェア注入——CI/CDサプライチェーン攻撃の全貌

脅威アクターグループTeamPCPが、Aqua Securityが開発するオープンソース脆弱性スキャナTrivyのGitHub Actionsにクレデンシャル窃取マルウェアを注入していたことが判明した。この攻撃はCI/CDパイプラインを標的とした高度なサプライチェーン攻撃であり、Trivy Actionを利用する数千のリポジトリのシークレット(認証情報)が漏洩リスクにさらされた。

Trivyは世界中のDevOpsチームが利用するコンテナ脆弱性スキャナとして知られ、GitHub Actionsマーケットプレイスでも最も人気のあるセキュリティツールの一つだ。今回の事件は、オープンソースのサプライチェーンセキュリティがいかに脆弱であるかを改めて浮き彫りにした。

事件の概要——何が起きたのか

2026年3月中旬、セキュリティ研究者らがaquasecurity/trivy-actionの異常な挙動を検知した。調査の結果、攻撃者TeamPCPが上流の依存アクションreviewdog/action-setupを侵害し、そこからTrivy Actionのワークフロー実行時に悪意あるコードが注入される仕組みが明らかになった。

攻撃の技術的詳細

攻撃は以下の4段階で実行された。

第1段階:上流Actionの侵害

TeamPCPはまず、reviewdog/action-setupというGitHub Actionのメンテナーアカウントを侵害した。このActionは多くのセキュリティツール系Actionが依存するユーティリティであり、攻撃の起点として戦略的に選ばれた。攻撃者はGitタグを不正なコミットに付け替える「タグ・ミュータブル攻撃」を実施し、既存のバージョンタグが悪意あるコードを含むコミットを指すようにした。

第2段階:依存関係を通じた横展開

aquasecurity/trivy-actionは内部でreviewdog/action-setupを参照していた。GitHubActionsではタグ参照(例:@v1)が一般的であり、タグが指すコミットが変更されても参照先は自動的に新しいコミットに切り替わる。これにより、Trivy Actionのユーザーは知らないうちに改ざんされたコードを実行することになった。

第3段階:ペイロードの実行

悪意あるコードはCI/CDワークフローの実行環境内でプロセスのメモリを走査し、環境変数やGitHub Secretsとして設定された認証情報を抽出した。対象には以下が含まれる。

  • AWSアクセスキー・シークレットキー
  • GCPサービスアカウントキー
  • GitHubパーソナルアクセストークン(PAT)
  • DockerHub認証情報
  • NPM/PyPIパブリッシュトークン
  • データベース接続文字列

第4段階:情報の流出

抽出された認証情報はBase64エンコードされ、CIのビルドログに出力された。GitHub Actionsのログはデフォルトでリポジトリの閲覧権限を持つユーザーがアクセスできるため、攻撃者はパブリックリポジトリのログを自動収集するスクリプトで大量の認証情報を取得した。

以下の図は、この攻撃の全体フローを示しています。

Trivy GitHub Actionsサプライチェーン攻撃のフロー図。TeamPCPによる上流Action侵害から認証情報窃取までの4段階の攻撃プロセス

この図のとおり、攻撃者は直接Trivyのリポジトリを侵害したわけではなく、依存関係の上流を狙うことで、より広範な影響を与える手法を採用した。

サプライチェーン攻撃とは何か

ソフトウェアサプライチェーン攻撃とは、ソフトウェアの開発・配布プロセスに介入し、正規のソフトウェアに悪意あるコードを混入させる攻撃手法だ。直接ターゲットを攻撃するのではなく、ターゲットが信頼するサードパーティのコンポーネントやツールを改ざんすることで、検知を回避しながら大規模な影響を与えることができる。

なぜGitHub Actionsが狙われるのか

GitHub Actionsはソフトウェア開発のCI/CDパイプラインとして広く使われており、以下の特性が攻撃者にとって魅力的だ。

  1. シークレットへのアクセス: ワークフロー実行時にはAWSキーやAPIトークンなどの機密情報がメモリに展開される
  2. タグの可変性: Gitタグは不変(immutable)ではなく、同じタグ名で異なるコミットを指すことができる
  3. 暗黙の信頼: 多くの開発者は人気のあるActionを精査せずに使用する
  4. 連鎖的な依存関係: Action AがAction Bに依存し、Action BがAction Cに依存するといった連鎖構造が一般的

過去の類似事例

今回の事件は孤立したケースではない。GitHub Actionsのサプライチェーン攻撃は近年増加傾向にある。

時期インシデント影響範囲
2022年4月actions/checkout偽装攻撃数百リポジトリ
2023年9月tj-actions/changed-files侵害約15,000リポジトリ
2024年3月actions/cacheタグ改ざん約2,000リポジトリ
2025年8月codecov/codecov-action侵害約29,000リポジトリ
2026年3月Trivy Action(本件)数千リポジトリ

この表が示すように、攻撃の規模と巧妙さは年々増している。特にセキュリティツール自体が攻撃の入口になるという皮肉な状況は、CI/CDパイプラインのセキュリティモデルを根本から見直す必要性を示唆している。

Aqua Securityの対応

Aqua Securityは事態を認識後、以下の対応を速やかに実施した。

  1. 即座のアクション固定: trivy-actionの全タグをフルコミットハッシュで固定し、タグの可変性に依存しないようにした
  2. 侵害範囲の調査: 影響を受けたバージョンのタイムスタンプを特定し、該当期間中にワークフローを実行したリポジトリのリストを作成
  3. 通知とガイダンス: GitHubのセキュリティアドバイザリを通じて影響を受けたユーザーに通知し、シークレットのローテーション(更新)を推奨
  4. 根本原因の修正: 上流依存関係をフルコミットハッシュ参照に切り替え、依存関係のピン留め(pinning)を徹底
  5. SigstoreによるAction署名: 今後のリリースではSigstoreを用いたAction成果物の暗号署名を導入

GitHub Actionsのセキュリティ対策——いま何をすべきか

今回の事件から学べる具体的なセキュリティ対策を整理する。

対策1:タグ参照をやめ、フルコミットハッシュで固定する

最も重要な対策だ。GitHub Actionsの参照を以下のように変更する。

# 危険: タグ参照(タグが改ざんされるリスクあり)
- uses: aquasecurity/trivy-action@v0.20.0

# 安全: フルコミットハッシュ参照(改ざん不可能)
- uses: aquasecurity/trivy-action@a1c56d86628cc72bfaa48d6bf4a0c49a9e1e086b

フルコミットハッシュ(SHA-1/SHA-256)は暗号学的に改ざんが困難であり、タグのように別のコミットに付け替えることはできない。

対策2:Dependabotでコミットハッシュを自動更新する

コミットハッシュ参照のデメリットは可読性が低く、更新が面倒な点だ。GitHubのDependabotはAction参照のバージョン更新を自動PRとして作成してくれる。.github/dependabot.ymlに以下を追加する。

version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"

対策3:ワークフローの権限を最小化する

GitHub Actionsのワークフローに付与する権限(permissions)を最小限にする。デフォルトでは広範な権限が付与されるため、明示的に制限することが重要だ。

permissions:
  contents: read    # リポジトリの読み取りのみ
  packages: read    # パッケージの読み取りのみ

対策4:OpenSSF Scorecardを活用する

OpenSSF(Open Source Security Foundation)が提供するScorecardは、オープンソースプロジェクトのセキュリティ体制を自動評価するツールだ。使用するActionのセキュリティスコアを事前に確認することで、リスクの高いActionを避けることができる。

対策5:シークレットの定期ローテーション

CI/CDパイプラインで使用する認証情報は90日ごとなど定期的にローテーションし、万が一漏洩しても被害期間を限定する。1Passwordのようなシークレット管理ツールを活用すれば、チーム全体の認証情報をセキュアに一元管理できる。

脆弱性スキャナの比較——Trivyの代替はあるか

今回の事件を受けて「Trivyから乗り換えるべきか」と考える開発者もいるだろう。重要なのは、今回の問題はTrivy本体の脆弱性ではなく、GitHub Actions配布メカニズムの問題だということだ。とはいえ、代替ツールを知っておくことは有意義だ。

以下の図は、主要なCI/CDセキュリティツールの機能を比較しています。

CI/CDセキュリティツール比較表。Trivy、Snyk、SonarQube、Grype、GitHub Advanced Securityの機能・料金を比較

この図のとおり、Trivyは無料かつオープンソースでありながら、コンテナスキャン・IaCスキャン・SBOM生成・ライセンス検出と多機能をカバーしている。

ツール強み弱み推奨ユースケース
Trivy無料・多機能・高速・OSSコミュニティ活発企業向けサポートは有償予算が限られたチーム、OSS重視の組織
SnykIDE統合が優秀、修正提案が自動高額、OSSスキャン上限ありエンタープライズ、商用サポートが必要な組織
SonarQubeコード品質分析が充実、技術的負債可視化コンテナスキャン非対応コード品質とセキュリティを一体管理したい組織
Grype高速・軽量・SBOM連携IaCスキャン非対応コンテナ特化のスキャンが必要な組織
GitHub Advanced SecurityGitHub統合がシームレス、CodeQL強力GitHub Enterprise必須、高額GitHub Enterprise利用組織

料金比較(2026年3月時点)

  • Trivy: 完全無料(Aqua Platform有償版は$150/月〜、約22,500円)
  • Snyk: Free Tier(200テスト/月)、Team $98/月〜(約14,700円)
  • SonarQube: Community Edition無料、Developer Edition $150/月〜(約22,500円)
  • Grype: 完全無料(Anchore Enterprise有償版は要問合せ)
  • GitHub Advanced Security: $49/ユーザー/月(約7,350円)、GitHub Enterprise契約が前提

GitHub Copilotを利用している開発者であれば、GitHub Advanced Securityとの統合による一貫したセキュリティワークフローの構築も検討に値する。

日本企業のCI/CDセキュリティ対策の現状

日本企業のCI/CDパイプラインセキュリティは、グローバル基準から見ると遅れている部分が多い。

日本市場の課題

1. GitHub Actionsのセキュリティ意識の低さ

日本のDevOpsチームの多くは、GitHub Actionsの便利さに注目する一方で、サプライチェーンリスクへの認識が不足している。IPAの「ソフトウェア開発に係るセキュリティ実態調査(2025年版)」によれば、CI/CDパイプラインのセキュリティ対策を「十分に実施している」と回答した企業はわずか**18%**にとどまる。

2. SBOM対応の遅れ

米国では2021年の大統領令(EO 14028)以降、政府調達ソフトウェアにSBOM(Software Bill of Materials)の提出が義務化されつつある。日本でも経済産業省がSBOMの導入ガイドラインを発行しているが、実際にSBOMを生成・管理している企業は大企業でも3割未満だ。

3. セキュリティ人材の不足

DevSecOps(開発・セキュリティ・運用の統合)を推進できる人材が圧倒的に不足している。NRIセキュアテクノロジーズの調査では、日本企業のセキュリティ人材不足率は**86%**に達し、米国(58%)や欧州(65%)を大きく上回る。

日本企業が今すぐ取るべきアクション

  1. Action参照の棚卸し: 自社のGitHub Actionsワークフローで使用しているすべてのActionを洗い出し、タグ参照をフルコミットハッシュに変更する
  2. Dependabotの有効化: GitHub Actionsの依存関係を自動更新する設定を導入する
  3. SBOM生成の自動化: TrivyやSyftを用いてビルド時にSBOMを自動生成し、脆弱性の継続的な監視体制を構築する
  4. ワークフロー権限の見直し: すべてのワークフローでpermissionsを明示的に設定し、最小権限の原則を適用する

日本の法規制との関連

2026年4月に全面施行される改正サイバーセキュリティ基本法では、重要インフラ事業者のサプライチェーンセキュリティ管理が強化される。ソフトウェアのCI/CDパイプラインも「サプライチェーン」の一部として管理対象に含まれる可能性があり、対応を急ぐ必要がある。

TeamPCPとは——新興の脅威アクターグループ

TeamPCPは2025年後半から活動が確認されている比較的新しい脅威アクターグループだ。主にオープンソースのCI/CDツールを標的とし、サプライチェーン攻撃を通じて大量の認証情報を収集することを目的としている。

セキュリティ研究者の分析によれば、TeamPCPの特徴は以下のとおりだ。

  • 戦略的なターゲット選定: セキュリティツール自体を侵害するという逆説的なアプローチ
  • タグ・ミュータブル攻撃の多用: Gitの仕組みを熟知した高度な技術力
  • 収益化モデル: 窃取した認証情報をダークウェブマーケットで販売、またはクリプトマイニングに利用
  • 帰属困難: 複数のプロキシとVPNを多段で使用し、追跡を困難にしている

業界の反応と今後の展望

今回の事件は、GitHub自体のセキュリティ機能に対する議論を活性化させている。

GitHubの対応

GitHubは以下の対策を検討・発表している。

  • Actionの不変タグ(Immutable Tags)機能: タグの付け替えを防止する新機能の開発を加速
  • Action署名の必須化: Sigstoreベースの暗号署名をマーケットプレイスの掲載要件に追加する方針
  • 依存関係グラフの強化: Action間の依存関係を可視化し、上流の異常を検知する機能の拡充

OpenSSFの動向

Open Source Security Foundation(OpenSSF)は、今回の事件を受けて「Secure Supply Chain Consumption Framework(S2C2F)」のv2.0を前倒しで策定中だ。CI/CDパイプラインのセキュリティベストプラクティスがより具体的に定義される予定だ。

SLSA(Supply-chain Levels for Software Artifacts)の重要性

SLSAは、ソフトウェアのビルドプロセス全体の完全性を保証するフレームワークだ。今回の事件はSLSA Level 3以上の採用がいかに重要かを示した。SLSA Level 3では、ビルド環境の隔離とビルド成果物の暗号的な来歴(provenance)証明が求められ、今回のような攻撃を検知・防止できる。

まとめ

Aqua SecurityのTrivy GitHub Actionsに対するサプライチェーン攻撃は、現代のソフトウェア開発におけるCI/CDパイプラインのセキュリティが「盲点」になっていることを明確に示した。セキュリティツール自体が攻撃の入口になるという事実は、開発者全員が真剣に受け止めるべき警鐘だ。

今すぐ取るべき3つのアクションステップ

  1. GitHub Actionsの参照を全チェック: 自社のすべてのワークフローファイルを確認し、タグ参照(@v1)をフルコミットハッシュ参照に変更する。特にセキュリティ系のAction(Trivy、CodeQL、Snyk等)は最優先で対応する
  2. シークレットを即座にローテーション: CI/CDパイプラインで使用しているAWSキー、GCPサービスアカウント、GitHubトークンなどすべての認証情報を更新する。1Passwordでチーム全体のシークレット管理を一元化することを推奨する
  3. Dependabotとワークフロー権限の設定: .github/dependabot.ymlを追加してAction更新を自動化し、すべてのワークフローでpermissionsを明示的に最小権限に設定する

CI/CDパイプラインは現代のソフトウェア開発の心臓部だ。その心臓部が侵害されれば、プロダクション環境への不正アクセス、顧客データの漏洩、サービス停止といった壊滅的な被害につながる。今回の事件を「他人事」とせず、自社の対策を今すぐ見直してほしい。

この記事をシェア