GitHub Action を標的としたサプライ・チェーン攻撃:認証情報窃取ペイロードを確認

Compromised GitHub Action Steals Workflow Credentials

2026/05/19 gbhackers — 広く利用されている GitHub Actions の actions-cool/issues-helper が、サプライ・チェーン攻撃により侵害され、機密性の高い CI/CD シークレットが攻撃者が管理するドメインへと流出するリスクが生じている。この攻撃は、Git タグに対する巧妙な操作を悪用するものであり、攻撃者は目に見える commit 履歴を改竄するのではなく、すべてのリリースタグを偽の commit (1c9e803) へ移動させた。この偽 commit は、リポジトリ内の正規ブランチに属していない。

大半の GitHub ワークフローは、”v3″ などのタグ参照で Action を利用しているため、それらのワークフローが次回に実行されるときに、自動的に悪意のコードをプルする状況に陥った。その影響を受けなかったのは、特定の信頼された commit SHA に固定されたワークフローのみであった。

さらに調査した結果、別リポジトリである actions-cool/maintain-one-comment も、同一の手法により侵害されていたことが判明した。現在、両リポジトリではタグが悪意の commit を指すよう変更され、同一のペイロードを実行する状態となっていることから、組織的な攻撃キャンペーンである可能性が示唆されている。いずれのケースにおいても、情報の流出先は “t[.]m-kosche[.]com” であり、窃取した認証情報の受信先として機能している。

StepSecurity の研究者が確認したのは、リポジトリ内の全ての既存タグが、悪意を持って再割当されていたことだ。これにより、Action のバージョン管理された参照の全てが、認証情報の窃取を目的とする配布経路へ変貌した。

GitHub Action における認証情報窃取

GitHub Actions ランナー内で、この悪意のペイロードが実行されると、メモリからシークレットを収集する一連の処理が引き起こされる。

まず JavaScript ランタイムである Bun をダウンロードし、これを用いてコードを実行した後に、Python 3 を含むサブプロセスを生成し、sudo により権限昇格を実施して制限されたメモリ領域へアクセスする。

The actions-cool/issues-helper Tags page on GitHub (Source : Stepsecurity).
The actions-cool/issues-helper Tags page on GitHub (Source : Stepsecurity).

最も重要な処理は、Runner.Worker プロセスのメモリ領域を標的とした、 “/proc/[PID]/mem” の読み取りである。このプロセスは、ワークフローの実行中に復号されたシークレットを処理する役割を担っているため、このメモリをスクレイピングすることで、API トークン/認証情報/環境変数シークレットなどの機密データを平文形式で抽出可能となる。それにより取得されたデータは、tr や grep などのコマンドライン・ツールによりフィルタリングされ、”isSecret”: true とマークされた値が抽出される。

シークレット収集後に、ペイロードは “t[.]m-kosche[.]com” に対するアウトバウンド HTTPS リクエストを開始して、窃取したデータを送信する。このネットワーク・アクティビティは、StepSecurity の Harden-Runner を利用した制御テスト実行により観測/確認されており、不審なプロセスおよび異常なネットワーク接続の両方がリアルタイムで検知された。

このインシデントは、GitHub Actions の一般的な利用方法における深刻な弱点を浮き彫りにしている。タグベース参照は利便性が高いが、リポジトリが侵害された場合には、ユーザーに気付かれずに改竄される可能性がある。それに対して、Action を不変の commit SHA に固定した場合には、検知されずに変更することは困難であるため、より強力なセキュリティ保証が提供される。

対策と防御

StepSecurity は、このインシデントを受けて多層的な防御策を実装した。具体的には、Compromised Actions Policy により、影響を受けた Action を参照するワークフローを実行前にブロックして、悪意のコード実行を防止する仕組みとなっている。さらに、Harden-Runner のグローバル・ブロックリストが更新され、それらの攻撃者のドメインへのアウトバウンド通信を拒否するようになったことで、ペイロードが実行された場合でもデータ流出を防止できる。

また、偽 commit 検知機能も導入され、有効なブランチやタグに対応しない commit を、ワークフローが参照しているケースを特定する。この検知メカニズムは、今回の攻撃で利用された手法を標的としており、同様の侵害に対する早期警告を提供する。

Harden-Runner's network monitor catches the bun process making an anomalous outbound call to t.m-kosche.com the destination for the exfiltrated secrets (Source : Stepsecurity).
Harden-Runner’s network monitor catches the bun process making an anomalous outbound call to t.m-kosche.com the destination for the exfiltrated secrets (Source : Stepsecurity).

このインシデントが示すのは、現代のサプライ・チェーンにおける CI/CD パイプラインが、きわめて高価値な標的であることだ。

ユーザー組織に対して強く推奨されるのは、ワークフローの監査を実施し、タグベースの Action 参照を固定 SHA に置き換えることだ。さらに、想定外のプロセス実行や外部向けネットワーク・トラフィックなどのランナーの異常動作も監視すべきだ。

Indicators of Compromise ( IOC )

影響を受けた GitHub Actions は以下のとおりである。

  • actions-cool/issues-helper の全タグ (計 53) が偽 commit へ移動
  • actions-cool/maintain-one-comment の全タグ (計 15) が偽 commit へ移動

流出ドメインは以下のとおりです。

  • “t[.]m-kosche[.]com” は Runner.Worker メモリから取得した認証情報を受信する。
  • Harden-Runner グローバル・ブロックリストへ追加済みである。

注:IP アドレスおよびドメインは、誤解決やハイパーリンク化を防止するため、意図的に無効化されている (例:[.])。再有効化は MISP/VirusTotal/SIEM など管理された脅威インテリジェンス環境でのみ実施すること。