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

GitHub の pull_request_target ワークフロートリガーを悪用して、大規模に CI/CD シークレットを盗むための自動化されたキャンペーン。

ezmtebo というハンドルを使用した攻撃者は、わずか 26 時間で 475 件以上の悪質なプルリクエスト (PR) を送信し、通常の CI 設定更新に偽装してメンテナーをだました。

このキャンペーンは、危険だが依然として一般的な設定ミスに基づいています:pull_request_target を使用しながらフォークから信頼されていないコードをチェックアウトすることです。

pull_request とは異なり、このトリガーはベース リポジトリのコンテキストで実行されるため、ワークフローは未知の寄稿者からの PR であっても、完全なリポジトリ シークレットと強力な GITHUB_TOKEN を受け取る可能性があります。

攻撃者の作戦は非常に標準化されています:pull_request_target を参照するリポジトリを検索し、それらをフォークして、prt-scan-{12 進数文字} という名前のブランチを作成します。

その後、conftest.py、package.json、Makefile、build.rs などの CI 関連ファイルに悪意のあるコードを注入してから、「ci: update build configuration」というタイトルの PR を開き、通常のDevOps の変更に紛れ込ませます。

2026 年 4 月 2 日、セキュリティ研究者 Charlie Eriksen は、GitHub の pull_request_target ワークフロートリガーを悪用する自動化されたキャンペーンを公に確認しました。

ワークフローが実行される場合、ペイロードは GITHUB_TOKEN を流出させ、シークレットを列挙し、クラウド メタデータをプローブし、ワークフロー ログと PR コメントの base64 エンコード マーカーを介して認証情報をリークし、NPM_TOKEN が公開されている場合は悪質なバージョンを公開しようとします。

6 つのウェーブ、1 つの脅威アクター

Wiz Research は孤立した事件と思われていたものを、2026 年 3 月 11 日から 4 月 3 日まで続く単一のキャンペーンにリンクしました。公開前の期間です。

これらのウェーブ全体で、このアクターは 500 件以上の悪質な PR を開き、少なくとも 2 つの npm パッケージを侵害し、粗雑な bash スクリプトから AI 生成の言語認識ペイロードへと着実に進化しました。

  • フェーズ 1(プロービング)は、testedbefore および beforetested-boop などのアカウントを使用して、setup.py および Makefile の基本的なシェルベースのペイロードで小規模なリポジトリを攻撃しました。
  • フェーズ 2(デプロイメント)では、420tb および 69tf420 というアカウントを導入し、EXFIL、RECON、DISPATCH、LABEL_BYPASS、DELAYED の各ステージを備えた大規模な .github/prt_exfil.sh スクリプトを標準化しました。
  • フェーズ 3(AI 拡張スケール)は elzotebo と ezmtebo によってもたらされ、テック スタック(テスト ファイル、pytest conftest.py、npm スクリプト)に適応し、後段階を大量に base64 エンコードするリポジトリ対応ラッパーを生成しました。
Image

この進化にもかかわらず、キャンペーンは GitHub の権限モデルについての明らかな誤解も示しています。

ラベル バイパス ロジックとワークフロー作成ステージは、pull_request_target トークンがデフォルトでは持たない書き込み権限を想定していることが多く、ペイロードの重要な部分をデッドコードに変えてしまっています。

影響とサプライ チェーン リスク

450 件以上の観測された悪用試行の分析は、成功率が 10% 未満で、ほとんどの成功したケースがアマチュア プロジェクトに限定されていることを示唆しており、短命の GitHub 認証情報のみを生じています

それでも、このアクターは同じ発行者によって保守されている少なくとも 2 つの npm パッケージを侵害し、@codfish/eslint-config および @codfish/actions の 0.0.0-PR-{PR#}–{commit} などの 100 を超える悪質なバージョンをプッシュしました。

このキャンペーンは、攻撃者がログ、base64 エンコード マーカー、または侵害された依存関係を介してシークレットを流出させる最近の他の GitHub Actions インシデントと呼応しており、CI/CD パイプラインがいかに高価値なサプライ チェーン ターゲットになっているかを強化しています。

Sentry、OpenSearch、IPFS、NixOS、Jina AI、recharts などの高価値ターゲットは、初回寄稿者の承認ゲート、アクター限定ワークフロー、CI トリガー上のパスベースの条件を介して攻撃をブロックしました。

この幅広い環境で検証されたケースには、AWS キーの盗難、Cloudflare トークン、その他のクラウド認証情報が悪質なワークフローと侵害された Actions によってもたらされています。

prt-scan の背後に AI またはエージェント ツールを指すいくつかのインジケーターがあります:持続的な高い PR ボリューム、適応的な言語とフレームワーク検出、プロジェクト固有のイディオムに密接に似たペイロード。

攻撃者は、CI セキュリティの理解が不完全であっても、機械のスピードで数百のリポジトリ全体にフォーク、分析、注入、PR を送信できます。

ディフェンダーにとって、重要な対策は明確です:pull_request_target で信頼されていないフォーク コードを実行しないこと、初回寄稿者に対して必須の人的確認を実施すること、GITHUB_TOKEN の権限を最小限に制限すること、機密ワークフローにパスとアクター フィルターを追加することです。

組織は、prt-scan- ブランチ、疑わしい「ci: update build configuration」PR、予期しない CI ファイル変更、異常なパッケージ バージョンをスキャンし、流出した可能性のあるシークレットをローテーションする必要があります。

翻訳元: https://gbhackers.com/fake-github-ci/

ソース: gbhackers.com