新たなGitHub Actionのサプライチェーン攻撃: reviewdog/action-setup

tj-actions/changed-files に対するサプライチェーン攻撃により、多くのリポジトリが週末に機密情報を漏えいしました。Wiz Research は、reviewdog/actions-setup@v1 に対する追加のサプライチェーン攻撃を発見しており、これが tj-actions/changed-files の侵害に寄与した可能性があります。

10 分で読めます

2025年3月21日更新

このインシデントに関して、以下の2つの追加情報を公に開示できるようになりました。

  1. 元の投稿で言及されていた特定の標的はCoinbaseであり、Coinbaseはcoinbase/agentkitを侵害しようとする試みが失敗に終わったことを確認しました。Wizは攻撃に関連するGitHubのIDを特定しており、攻撃者が仮想通貨エコシステムに関与し、フランス語および英語を使用し、ヨーロッパまたはアフリカの時間帯で活動していることを示唆しています。

この関連性の最初の兆候は、3月15日にSan Tranによって提供されました。さらに以下の証拠が確認されています:

  1. 3月13日のtj-actions/changed-filesへのコミットには、Coinbaseのリポジトリを明示的に標的とするペイロードの変異体が含まれていた

  2. 3月14日のcoinbase/agentkitのワークフローログには、Coinbaseの従業員になりすましたコミットに関連する記録があり、同じ攻撃者がリポジトリのサプライチェーンを侵害しようとする試みを示していた

  3. changelog.yml(tj-actions/changed-filesを使用するワークフロー)が、tj-actionsの侵害から1時間以内に削除され、StepSecurityによる公開開示のはるか前に行われていた

Wizの完全な分析結果は、Coinbaseの責任ある開示チャネルを通じて共有済みです。また、この事象のタイムラインについては、Unit42の公開開示にて確認できます。このレポートは、Wizの非公開レポートとも一致しています。

2. haya14busaは、GitHubの協力を得て、action-setupインシデントを引き起こした侵害されたユーザーを特定し、対処しました。このアカウントは、以前議論された招待ワークフローによって悪意を持って追加されたものではなく、アカウント自体が侵害されていました。

今後も、情報が更新され次第、責任を持って共有していきます。Wizは、reviewdogのメンテナーを引き続きサポートし、action-setupの侵害に関する責任ある開示を行っています。haya14busatj-actionsのメンテナーの協力と迅速な対応に感謝します。現在の時点で、彼らはこのインシデントを解決し、今後の攻撃へのリスクを低減したと考えています。

Overview of the incident


2025年3月19日更新 この問題にはCVE-2025-30154が割り当てられました。

2025年3月19日更新 Wizの開示を受けて、reviewdogのメンテナーがインシデントの詳細な分析と対応策を公開しました。

現時点では、一連のサプライチェーン攻撃が連鎖的に発生し、最終的に特定の高価値ターゲットを狙ったものと考えています。
人気のあるGitHub Actionである tj-actions/changed-files に対するサプライチェーン攻撃により、週末に多くのリポジトリが機密情報を漏えいしました。Wiz Research は、reviewdog/actions-setup@v1 に対する追加のサプライチェーン攻撃を発見しており、これが tj-actions/changed-files の侵害に寄与した可能性があります。現時点では、これは最終的に特定の高価値ターゲットを狙った一連のサプライチェーン攻撃であると考えています。

要約

以前の報告のとおり、広く使用されている GitHub Action tj-actions/changed-files が悪意のあるペイロードによって侵害され、影響を受けたリポジトリがログ内で機密情報を漏えいしました。その影響で、tj-actions/eslint-changed-files も同時に侵害されました。これは tj-actions/changed-files に依存しているためです。

Adnan Khan 氏の情報提供をもとに、Wiz Research は reviewdog/action-setup@v1 の GitHub Action が、tj-actions のインシデントに先立って侵害されていたことを特定しました。認証情報の窃取や CI パイプラインの侵害を防ぐために、直ちに対応する必要があります。

tj-actions のメンテナーは、GitHub の Personal Access Token (PAT) が侵害されたことが原因で、攻撃者によるリポジトリの改ざんを許してしまったと明らかにしています。

私たちは、reviewdog/action-setup の侵害が、tj-actions-bot PAT の侵害の根本的な原因である可能性が高いと考えています。tj-actions/eslint-changed-files reviewdog/action-setup@v1 を使用しており、tj-actions/changed-files のリポジトリは Personal Access Token を使用して tj-actions/eslint-changed-files を実行します。reviewdog/action-setup は、tj-actions PAT の侵害とほぼ同じタイミングで侵害されていました。

reviewdog/action-setup の侵害はこれまで公表されておらず、偶然対処された形跡がありますが、再発のリスクが残っています。このため、tj-actions/changed-files の再侵害につながる可能性があります

Wiz はこの問題を reviewdog および GitHub に報告しました。
影響を受けた組織への影響は何ですか?

tj-actionsの場合と同様に、侵害されたreviewdogアクションは、それを使用しているCIワークフローに悪意のあるコードを挿入し、ワークフローの機密情報を含むCIランナーのメモリをダンプしました。この結果はtj-actionsのケースと同じですが、ペイロードは異なり、curlを使用してペイロードを取得することはありませんでした。代わりに、ペイロードはbase64エンコードされ、ワークフローで使用されるinstall.shファイルに直接挿入されました。

攻撃者のペイロードが `install.sh` に挿入された例

公開リポジトリでは、機密情報はワークフローログの一部としてすべての人に見えるようになり、ダブルエンコードされたbase64ペイロードとして難読化されていました。現在のところ、攻撃者が制御するサーバーへの機密情報の外部流出は確認されておらず、機密情報は影響を受けたリポジトリ内でのみ確認可能でした。

reviewdog アクションの v1 タグは、3月11日18:42から20:31 UTCの間に悪意のあるコミットに指され、その後、v1 タグは古いコミットに戻されたと考えています。攻撃者は、侵害を隠すために強制的に古いコミットに戻した可能性があり、これは狭い目的を達成し、ステルスを保つことを意図していたことを示唆しています。(編集: この投稿の初期ドラフトでは、これを自動的なバージョンアップと関連付けていましたが、reviewdog メンテナーからのフィードバックに基づいて修正されました)

この侵害により、アクションがキャッシュされ、すでに漏えいした機密情報のリスクが残っているため、引き続き対応が必要です。

どの製品が影響を受けていますか?

2025年3月17日現在、reviewdog/action-setup アクションの v1 タグのみが影響を受けていることが確認されています。reviewdog/action-setup のハッシュ固定バージョンを使用しているか、異なるタグに固定しているお客様は影響を受けません。

ただし、このアクションは、以下を含む reviewdog の他の多くのアクションのコンポーネントとして使用されています:

  • reviewdog/action-shellcheck

  • reviewdog/action-composite-template

  • reviewdog/action-staticcheck

  • reviewdog/action-ast-grep

  • reviewdog/action-typos

これらの影響を受けた reviewdog/actions を使用しているお客様は、そのアクションのバージョンに関わらず影響を受ける可能性があります。

これはどうして起こったのですか?

調査は現在も進行中です。攻撃者は、リポジトリのフォークに配置した悪意のあるコードに v1 タグを更新するのに十分なアクセス権を得たことがわかっています。reviewdog GitHub オーガニゼーションは比較的大規模な貢献者ベースを持ち、自動化された招待を通じて積極的に貢献者を追加しているようです。これにより、貢献者のアクセスが侵害されたり、悪意を持って貢献者アクセスが得られたりする攻撃対象の範囲が広がります。

新しい情報が明らかになり次第、このブログ投稿を更新します。


セキュリティチームはどのような対応を取るべきですか?

  1. このGitHubクエリを使用して、組織のリポジトリ内で影響を受けたGitHub Actionsへの参照を見つけます(yourorgをGitHub組織の名前に置き換えてください)。

  2. 影響を受けたリポジトリが識別された場合、影響を受けたワークフロージョブを確認し、「Actions」タブに移動するか、「View Runs」をクリックして、関連する時間枠内に実行された影響を受けたコンポーネントを含むGitHub Actionsがあるかどうかを確認します。

  3. 関連するワークフロージョブに移動し、「Run reviewdog/action-setup@v1」ステップを展開します。もし「🐶 Preparing environment ...」という行が表示されている場合、悪意のあるコードが実行されたことになります。その中にダブルエンコードされたbase64文字列が含まれているかどうかを確認します。もし含まれていれば、それは悪意のあるペイロードが正常に実行されたことを意味し、影響はリポジトリが公開か非公開かによって異なります:

    • 公開リポジトリの場合、文字列内の機密情報がワークフローログに公開されて漏えいしたことを意味し、できるだけ早くそれらをローテーションすることを強く推奨します。

    • 非公開リポジトリの場合、機密情報は公開されていませんが、それでもローテーションを検討するべきです。

実際に確認された悪意のあるペイロード実行の例

リポジトリが影響を受けた場合でも、公開された機密情報が ghs_ で始まる GitHub トークンのみであった場合、これらは短期間で有効期限が切れるトークンであり、24時間以内またはワークフロージョブが完了すると自動的に失効します。そのため、ジョブが中断されて終了しなかった場合を除き、ghs_ トークンのみの漏えいによる長期的なリスクは限定的です。

さらに、ワークフローがカスタムの秘密情報(例:token: ${{ secrets.MYSECRET }})を明示的に参照していない場合、このインシデントによって機密情報が侵害された可能性は低いです。主なリスクは、影響を受けたワークフロー内で明示的に参照されたカスタム秘密情報が公開される可能性にあります。

もし自組織が影響を受けた場合、何をすべきですか?

  1. 影響を受けたアクションの使用を直ちに停止し、可能であれば安全な代替アクションに置き換えてください。

  2. リポジトリのすべてのブランチでアクションへの参照を削除し、メインブランチだけでなく、他のブランチでの実行も防止してください。

  3. 漏洩した機密情報はできるだけ早くローテーションしてください。関連するワークフローを削除すると、ログも削除され、機密情報のさらなる露出を防ぐことができます。ただし、削除する前に露出期間のワークフローログをダウンロードしておくことをお勧めします。

今後このようなリスクを防ぐにはどうすればよいですか?

  1. GitHubからの推奨に従い、将来のサプライチェーン攻撃を防ぐために、GitHub Actionsをバージョンタグではなく、特定のコミットハッシュにピン留めしてください。

  2. 過去のワークフロー実行を監査し、疑わしい活動がないか確認してください。ログで異常なアウトバウンドネットワーク要求がないかをチェックし、CIランナーのログが公開されているリポジトリのレビューを優先してください。機密情報がログに露出している可能性があります。

  3. GitHubのホワイトリスト機能を使用して、承認されていないGitHub Actionsの実行をブロックし、GitHubを設定して信頼されたアクションのみを許可するように構成してください。


Wizはどのように支援できますか?

  1. Wiz Sensorの顧客は、CIワークロードにデプロイされたSensorを使用して、この攻撃に関連する悪意のある活動(例えば、プロセスメモリのダンプ)を検出できます。

  2. Wiz Defendの顧客は、GitHub監査ログが有効になっている場合、悪意のある資格情報の悪用によって引き起こされる可能性のある二次的な悪意のある活動(例えば、ワークフローログの削除や異常なボットによるマージ)から保護されています。

  3. Wizの顧客は、追加機能が提供され次第更新されるこの攻撃に関するThreat Intel Centerのアドバイザリーを参照することもできます。


参照資料

続きを読む

パーソナライズされたデモを入手する

Wizの動作を見る準備はできましたか?

“私が今まで見た中で最高のユーザーエクスペリエンスは、クラウドワークロードを完全に可視化します。”
デビッド・エストリックCISO (最高情報責任者)
“Wizは、クラウド環境で何が起こっているかを1つの画面で確認することができます。”
アダム・フレッチャーチーフ・セキュリティ・オフィサー
“Wizが何かを重要視した場合、それは実際に重要であることを私たちは知っています。”
グレッグ・ポニャトフスキ脅威および脆弱性管理責任者