
2026/03/22 18:45
**タイトル:** もう一度攻撃を受けるトリヴィ―: 広範囲にわたる GitHub Actions タグの秘密情報漏洩 **概要:** - 最近の被害波では、GitHub Actions のワークフローで機密情報が流出しているケースが確認されています。 - 問題は、意図せず秘密を露呈させるタグの誤用に起因し、脆弱性スキャンに Trivy を利用するプロジェクトに大きなセキュリティリスクをもたらしています。 **主なポイント:** 1. **影響範囲** – GitHub 上の多数のリポジトリが、タグ管理の不備によって被害を受けています。 2. **脆弱性メカニズム** – 攻撃者はタグ参照を利用して悪意ある設定を挿入し、CI/CD 実行時に秘密情報を漏洩させます。 3. **推奨対策** - GitHub Actions の全ワークフローをレビューし、不要なタグを除去・クリーンアップする。 - タグ使用は信頼できるソースのみに限定する。 - 秘密情報スキャンツールを導入し、厳格なアクセス制御を徹底する。 **実施項目:** - 既存アクションとタグに対して包括的な監査を行う。 - Trivy の設定を更新し、秘密情報が露出しないように調整する。 - ワークフローのログを定期的にモニタリングし、不審な活動を検知する。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Summary
攻撃者は 2026 年 3 月 19 日に
aquasecurity/trivy-action GitHub Action の 76 タグのうち 75 タグ に悪意あるコードを強制的にプッシュし、元のエントリポイントを大規模な情報窃盗ペイロードに置き換えました。このペイロードは Actions ランナーからシークレットを収集します。攻撃対象となったタグには @0.69.4‑@0.69.6 および多くの古いバージョンが含まれますが、@0.35.0 タグは既に悪意あるコミットで使用されるベースコミットを指していたため未変更でした。
ペイロードは 204 行からなる情報窃盗スクリプトを含み、収集したシークレットを AES‑256‑CBC と RSA‑4096 で暗号化し、HTTPS POST により
scan[aquasecurtiy].org へ送信するか、被害者の GitHub アカウントに tpcp-docs という名前の公開リポジトリを作成します。悪意あるコミットはオリジナルメタデータ(作者、タイムスタンプ)を偽装しましたが署名されておらず、親コミットの日付は 2026 年 3 月でした。これにより、書き込みアクセスが侵害された場合に GitHub の「不変」バッジを迂回できることが示されています。
本攻撃は TeamPCP Cloud stealer ファミリーと関連しており、Trivy の CI 環境からの以前の認証情報流出に続いています。
aquasecurity/trivy-action を参照する約 10,000 件の GitHub ワークフローが完全に侵害されました。毒入りタグを使用したワークフローは、クラウド認証情報、SSH キー、API トークンなどすべての公開されたシークレットを直ちにローテーションする必要があります。
妥協インジケータ には、
scan[aquasecurtiy].org へのネットワークトラフィック、SHA‑256 ハッシュ 18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671a(ペイロード)、および新しく作成された公開リポジトリ名 tpcp-docs が含まれます。
推奨事項:
- アクションをコミット SHA
に固定するか、タグ @0.35.0 のみ使用してください。その他のタグは危険です。57a97c7e7821a5776cebc9bb87c984fa69cba8f1 - 2026 年 3 月 19 日 UTC 時間約 19:00 以降に実行された
ランを GitHub Actions ログで監査し、組織内リポジトリからtrivy-action
を検索してください。tpcp-docs
本件は、「不変」リリースでもリポジトリの書き込みアクセスが侵害されると強制タグ更新によって汚染できることを示しています。さらに、2026 年 3 月 22 日に Trivy イメージ(0.69.4‑0.69.6)の Docker イメージ全体が更新されていることが判明し、サプライチェーン攻撃と Docker Hub のアーティファクトとの関連が確認されました。
本文
更新 – 2026年3月22日
Docker Hubにて追加のTrivyアーティファクトが改ざんされていることが判明しました。
新しいイメージタグ(0.69.5 と 0.69.6)および以前に特定された 0.69.4 は、同一のインフォストリーヤー・ペイロードを含むことが確認されました。最新タグは、曝露期間中に悪意あるイメージへとポイントしています。Docker イメージ改ざんに関する詳細な更新記事はこちらをご覧ください:https://socket.dev/blog/trivy-docker-images-compromised。
本日、Paul McCarty によって Trivy を標的にした新たなサプライチェーン攻撃が報告されました。これで 3 月に Trivy エコシステムを揺るがす二度目の異なる侵害事案となります。今回の事件は GitHub Actions に影響し、以前発生した VS Code 拡張機能を含む OpenVSX 改ざんとは別物です。初期報告では Trivy v0.69.4 の改ざんに焦点が当てられましたが、Homebrew をはじめとする下流エコシステムはすでに該当バージョンをロールバックしています。疑わしい活動の最初の検知は 19:15 UTC 程度でした。
早期調査では、攻撃範囲が単一リリースに留まらないことが示唆されています。Socket は aquasecurity/trivy-action リポジトリ(CI/CD パイプラインで Trivy の脆弱性スキャンを実行する公式 GitHub Action)において、75/76 のバージョンタグが強制プッシュされていることを確認しました。GitHub 上でこのアクションを参照しているワークフローは 10,000 件以上あるため、潜在的な拡散半径は大きいです。これらのタグは悪意あるペイロードを提供するように変更され、信頼できるバージョンリファレンスがインフォストリーヤーの配布メカニズムへと変貌しました。改ざんされたタグは執筆時点でも有効です。
aquasecurity/trivy-action をバージョンタグで参照している(例えば
@0.34.2、@0.33.0、@0.18.0 などの一般的なタグ)すべての CI/CD パイプラインは、本来の Trivy スキャンが実行される前に悪意あるコードを走らせます。これによりユーザーは問題に気付かない可能性があります。現時点で @0.35.0 だけが影響を受けていないタグとみなされています。
Socket はリアルタイムでこの活動を検知しました。19:15 UTC から、Socket は本キャンペーンに関連する悪意ある GitHub Actions を対象に 182 件の脅威フィードエントリを生成し、すべてが Socket の AI スキャナーによって Backdoor、Infostealer、または Reconnaissance マルウェアとして正しく分類されました。
aquasecurity/trivy-action GitHub Action の改ざんタグに関する Socket パッケージページのスクリーンショット(「Known Malware」警告が表示)
悪意あるペイロードは GitHub Actions ランナー内で実行され、CI/CD 環境の機密データを狙います。観測された挙動は次の通りです。
- ランナープロセスメモリをダンプして秘密情報を抽出
- SSH キーを収集
- AWS、GCP、Azure、Kubernetes のサービスアカウントトークンなどを外部に送信
攻撃の配信機構
攻撃者はブランチへのプッシュや新しいリリース作成(コミット履歴が残り通知が発生する)ではなく、75 個の既存バージョンタグを強制プッシュして新たな悪意あるコミットへポイントさせました。
重要ポイント
- タグの意味 – Git タグはコミット SHA を指し示すポインタです。ワークフローが
を参照すると、GitHub はそのタグが現在指しているコミットを解決します。aquasecurity/trivy-action@0.33.0 - 強制更新 – プッシュ権限を持つ攻撃者はタグを別のコミットへ強制的に更新でき、該当タグを参照するすべてのワークフローが新しいコードを自動で取得します。
各タグの改写手順
- 改ざんメタデータ付きで新規コミットを作成
- master HEAD(57a97c7e)から開始し、
をインフォストリーヤーに差し替え、それ以外は master のまま。entrypoint.sh
- master HEAD(57a97c7e)から開始し、
- タグが以前指していたコミット(例:タグ 0.33.0 は PR #481 マージ)を取得。
- そのコミットのメタデータ(作者名・メール、コミッター、両方のタイムスタンプ、PR 番号と「Fixes」参照を含む完全なコミットメッセージ)をクローン。
- 親コミットを master HEAD に設定し、元の親ではなくする。
- タグを新しいコミットへ強制プッシュ。
こうして得られるファイルツリーはすべて 75 個の悪意あるコミットで同一(master + 置き換えた
)ですが、タグごとにコミットメタデータが異なり、entrypoint.shでは正当な履歴に見えるように偽装されています。git log
インシデントの指標
| 項目 | 内容 |
|---|---|
| ネットワーク | (タイポスキャットドメイン) |
| ファイルハッシュ | SHA‑256: ( のペイロード) |
| 改ざんされたアクション | 75 タグ(〜)すべてが偽装コミット SHA を持つ |
ペイロード概要
悪意ある
entrypoint.sh は合計204行です。
| 範囲 | 内容 |
|---|---|
| 4–105 | インフォストリーヤー(情報収集) |
| 106–204 | 正規の Trivy スキャンコード |
マルウェアが最初に実行され、続いて本来の Trivy スキャンが正常に走るため、ユーザーは期待通りの出力を見て問題に気付かない可能性があります。
Stage 1 – 秘密情報収集
- ランナーのプロセス(
、Runner.Worker
、Runner.Listener
、runsvc
)から環境変数を取得run.sh
を読み取り、"env" または "ssh" を含むキーを抽出/proc/<pid>/environ- 値がファイルパスであれば、その内容(例:SSH キー)も収集
Stage 2 – 暗号化
- 32 バイトのランダムセッション鍵生成
+ PBKDF2 により AES 鍵と IV を導出openssl enc -aes-256-cbc- RSA‑4096 公開鍵(OAEP)でセッション鍵をラップ
- 暗号化ペイロード (
) とラップされたキー (payload.enc
) をsession.key.enc
にまとめるtpcp.tar.gz
Stage 3 – 情報漏洩
- 主要チャネル – HTTPS POST で
(タイポスキャット)へ送信。ヘッダーscan.aquasecurtiy.orgX-Filename: tpcp.tar.gz - フォールバックチャネル – 主エンドポイントが失敗し、
が利用可能な場合、マルウェアは被害者自身の GitHub アカウントに公開リポジトリINPUT_GITHUB_PAT
を作成し、バンドルをリリース資産としてアップロード。リポジトリ名は疑念を抱かせないように設定。tpcp-docs
すべての一時ファイルは送信後削除され、永続的な痕跡はオプションで生成された
tpcp-docs リポジトリと外部 HTTPS ログのみです。
アトリビューション
マルウェアは Python コメント内で TeamPCP Cloud stealer と自己識別しています。TeamPCP(別名 DeadCatx3、PCPcat、ShellForce)は、データ漏洩、ランサムウェア、暗号採掘キャンペーンに関与したことが文書化されたクラウドネイティブ脅威アクターです。
緩和策
- Trivy‑Action をバージョンタグで使用している場合は直ちに停止
- 安全なオプション:コミット SHA
に固定、またはタグ57a97c7e7821a5776cebc9bb87c984fa69cba8f1
のみを使用0.35.0
- 安全なオプション:コミット SHA
- 悪意あるタグで実行したパイプラインは完全に侵害されたとみなす
- クラウド認証情報、SSH キー、API トークン、データベースパスワード、Docker レジストリトークンなどの全秘密をローテーション
- GitHub 組織を監査し、
リポジトリが存在するか確認。tpcp-docs- 2026年3月19日 19:00 UTC 前後に trivy‑action が実行された Actions ログをレビュー
注記:今回の攻撃は、Trivy の公式 GitHub Action を介して多くの CI/CD パイプラインに深刻なリスクをもたらしました。迅速かつ徹底した対策が求められます。