偽のGitHub CI更新がシークレットとトークンを盗む

概要

セキュリティ研究者チャーリー・エリスクェンは、GitHubのpull_request_targetワークフロー触発を悪用する自動化されたキャンペーンを公開的に特定しました。この攻撃者はハンドル名ezmteboを使用し、わずか26時間で475件以上の悪意のあるプルリクエスト(PR)を開きました。

攻撃の仕組み

攻撃者の戦術:

  • GitHub上でpull_request_targetワークフロー触発を参照するリポジトリを見つける。
  • それらをフォークし、prt-scan-{12-hex-chars}という名前のブランチを作成します。
  • CI関連のファイル(conftest.py, package.json, Makefile, build.rsなど)に悪意のあるコードを挿入します。
  • 「ci: build configuration update」というタイトルでPRを開き、通常のDevOps変更と混在させます。

攻撃の影響

成功した攻撃:

  • GITHUB_TOKENをエクスフィル(外部に送信)します。
  • シークレットを列挙し、クラウドメタデータをプローブします。
  • NPM_TOKENが露出された場合、悪意のあるバージョンを公開します。

攻撃の進化

6つのフェーズ:

  • プロービング(Phase 1):テストアカウントを使用して、基本的なシェルベースのペイロードを小さなリポジトリに送ります。
  • 展開(Phase 2):.github/prt_exfil.shスクリプトを使用し、EXFIL, RECON, DISPATCH, LABEL_BYPASS, DELAYEDなどのステージを導入します。
  • AI強化のスケーリング(Phase 3):AI生成の言語認識ペイロードを使用して、技術スタックに適応するリポジトリ認識ラッパーを作成します。

防御策

組織がとるべき対策:

  • pull_request_targetワークフローで不信任のフォークコードを実行しない。
  • 初めての貢献者に対して人間によるレビューを強制する。
  • GITHUB_TOKEN権限を最小限に抑える。
  • 敏感なワークフローにパスとアクターフィルタを追加する。

元記事: https://gbhackers.com/fake-github-ci/