2026-06-23

GitHubがactions/checkoutを更新し、一般的なPwnリクエスト攻撃パターンをブロック

GitHubは、ソフトウェアサプライチェーンのセキュリティを強化するために、actions/checkoutを更新し、pull_request_targetワークフローを利用した悪意のあるコードの実行を防ぐことを発表しました。この変更は2026年6月18日から有効で、特にフォークからのプルリクエストに対して、特定の条件が満たされる場合にコードの取得を拒否します。これにより、攻撃者がGITHUB_TOKENや他の秘密情報を盗むリスクが軽減されることが期待されています。

メトリクス

このニュースのスケール度合い

7.0 /10

インパクト

6.5 /10

予想外またはユニーク度

6.0 /10

脅威に備える準備が必要な期間が時間的にどれだけ近いか

7.0 /10

このニュースで行動が起きる/起こすべき度合い

8.0 /10

主なポイント

  • GitHubは、actions/checkoutを更新し、pull_request_targetワークフローを利用したPwnリクエスト攻撃を防ぐことを発表しました。
  • この変更により、フォークからのプルリクエストに対して、特定の条件が満たされる場合にコードの取得が拒否されます。

社会的影響

  • ! この変更により、開発者はより安全にGitHub Actionsを利用できるようになり、ソフトウェア開発の信頼性が向上します。
  • ! また、セキュリティの強化は、開発者コミュニティ全体にとっても重要なステップとなります。

編集長の意見

GitHubのactions/checkoutの更新は、ソフトウェアサプライチェーンのセキュリティを強化するための重要な一歩です。特に、pull_request_targetトリガーを利用した攻撃は、過去に多くのセキュリティインシデントを引き起こしてきました。このトリガーは、プルリクエストが開かれた際に自動的に実行されるため、悪意のあるコードが実行されるリスクが高まります。GitHubは、このリスクを軽減するために、特定の条件が満たされる場合にコードの取得を拒否するようにactions/checkoutを更新しました。これにより、攻撃者がGITHUB_TOKENや他の秘密情報を盗むリスクが大幅に減少します。今後、開発者はこの変更を考慮し、pull_request_targetを使用する際には慎重に判断する必要があります。また、GitHub Actionsのセキュリティは、単にこの更新だけでは完全には保護されません。開発者は、ワークフローが秘密情報や書き込み権限を持つ場合には、引き続き慎重なレビューを行う必要があります。さらに、他のイベントタイプからのpwnリクエストも依然としてリスクがあるため、全体的なセキュリティ戦略の一環として、これらのリスクを管理することが求められます。最終的には、開発者が自らのワークフローを見直し、必要に応じて権限を制限することが、セキュリティを強化するための鍵となります。

解説

GitHubがactions/checkoutを強化——pull_request_target悪用の“pwn request”既定ルートを遮断します

今日の深掘りポイント

  • GitHubが公式アクションactions/checkoutを更新し、pull_request_target経由でフォークPRのコードを直接取得・実行する一般的な攻撃パターンを既定でブロックしました。これにより、GITHUB_TOKENやシークレットの窃取リスクが顕著に下がります。
  • ただし、ワークフロー設計次第では依然として回避可能な余地があり、pull_request_targetを使った「権限付きのビルド/テスト/公開」をそもそもやめる設計変更が本質策です。
  • CI/CDのゼロトラスト化(最小権限、コミットSHAピン留め、環境分離、明示的承認)をこの機会に一段上へ引き上げるべきです。
  • インシデントの起点となりやすい「フォークPR+自動実行+シークレット利用」の組合せを棚卸しし、監査ログとアーティファクトのレトロスペクティブ確認を直ちに開始することを推奨します。
  • 実務的には対応のしやすさと即応の必要性が高く、確率の高い攻撃ベクトルを潰す打ち手として費用対効果が高いアップデートです。反面、万能薬ではなく、設計の負債を同時に返す意思決定が問われます。

はじめに

長らくGitHub Actions界隈で火種になってきたのが、pull_request_targetの扱いです。フォークからのPRでも、ベースリポジトリのコンテキストでワークフローが動くため、GITHUB_TOKENやシークレットへアクセスしやすくなります。この利便性が裏返って、攻撃者がPRに細工したコードを「信頼された文脈」で実行させ、秘密情報を外へ抜く“pwn request”の定番パターンを生んできました。

今回、GitHubがactions/checkoutを更新し、特定の条件下でフォークPRのコードチェックアウトを拒否する既定挙動を導入しました。サプライチェーンの実害事例が相次ぐ中で、世界規模のCI/CDに一律の安全策を敷く意味は重いです。現場は単にバージョンを上げて終わりではなく、「pull_request_targetは何のために存在し、何を絶対にさせてはいけないか」を、このタイミングで再定義する必要があります。

本稿では、既知の事実と設計インサイトを切り分け、脅威シナリオの写像、そして運用アクションまで一気通貫で整理します。

深掘り詳細

いま分かっている事実

  • GitHubは公式アクションactions/checkoutを更新し、pull_request_targetワークフローに紐づくフォークからのPRに対して、条件が一致する場合にコード取得を拒否するセーフガードを有効化しました。開始日は2026年6月18日と報じられています。これにより、PRのヘッド(攻撃者が制御可能なコミット)をそのままチェックアウトして秘密情報にアクセス・送信する“pwn request”の王道手口を既定で遮断します。
  • 目的はGITHUB_TOKENおよび組織・環境のシークレット窃取の抑止で、供給網攻撃の横展開(パッケージ公開、タグ付け、リリース生成などの権限濫用)を未然に断つことです。
  • 背景には、ここ数カ月で観測されたソフトウェアサプライチェーン侵害の連鎖があり、pull_request_targetの悪用が一因として注目されてきました。報道ベースでは、ビルドシステム周辺のパッケージ侵害にもこの挙動の悪用が絡んだと指摘されています。
  • 二次情報としての公開報道: The Hacker Newsが当該変更を報じています(参考情報参照)です。

設計インサイト——何が変わり、何が変わらないか

  • 変わる点
    • 「うっかり危ないデフォルト」を機械的に塞ぎます。pull_request_targetで“PRヘッドをcheckoutして実行”という地雷を踏む確率が大幅に下がります。現場の手戻りコスト(レビューの見落としや教育のばらつき)を、プラットフォーム側の強制力で補正できるのは大きいです。
  • 変わらない/残るリスク
    • ワークフロー次第では依然として回避策がありえます。たとえば別アクションや手書きのgitコマンドでPRヘッドを取得する、外部アクションに危険な入力を渡す、workflow_runなど他のイベントで特権実行を誘発する、等です。つまり設計レベルで「不信任コードは決して特権で実行しない」を徹底しない限り、別経路で再発します。
    • actions/checkout以外のサードパーティアクションやスクリプトが同様の危険デフォルトを持つ可能性があります。組織として「PR由来コードの実行境界」を横断的に定義・検証しないと、部局差で穴が残ります。
  • 方針の再定義が核心
    • pull_request_targetは「PRに反応するメタ作業(ラベル付け、メッセージ投稿、軽微なメタデータ操作)に限定」し、「ビルド・テスト・リリース等の実コード実行」はpull_request(またはpush)に分離する、という住み分けを組織規約として固定するのが要諦です。
    • シークレットとGITHUB_TOKENの権限は明示的に最小化(permissionsブロックで明示、必要なジョブにのみsecretsを渡す)。「動けばよい」から「明示しなければ動かない」へ文化を転換します。

脅威シナリオと影響

以下は典型的な攻撃連鎖を、MITRE ATT&CKの観点でモデル化した仮説です。個々の環境で該当する技術要素は異なるため、あくまで適用可能性の評価のための枠組みとしてご覧ください。

  • シナリオA:フォークPR経由でシークレットを抜き、パッケージ公開やタグ改竄へ横展開

    • 偵察(Reconnaissance)
      • 公開リポジトリのworkflow定義を探索し、pull_request_targetとactions/checkoutの併用を特定。ATT&CK: T1593(Open Webサイト/リポジトリ探索)
    • 初期侵入(Initial Access)/ 信頼関係の悪用
      • フォークからPRを送信し、信頼されたコンテキストでワークフローを起動。ATT&CK: T1199(Trusted Relationship)
    • 実行(Execution)
      • ランナー上でスクリプトを実行し、環境変数やファイルに展開されたクレデンシャルへアクセス。ATT&CK: T1059(Command and Scripting Interpreter)
    • 資格情報アクセス(Credential Access)
      • GITHUB_TOKENやその他シークレットを取得。ATT&CK: T1552(Unsecured Credentials)
    • 流出(Exfiltration)
      • 外部エンドポイントへ送信、あるいはIssue/PRコメント、Gist等のWebサービスを使って搬出。ATT&CK: T1567(Exfiltration Over Web Service)
    • 影響(Impact)/ 継続的な悪用
      • 取得したトークンでリリース/タグ/パッケージの改竄、ワークフローの書換え、さらには他リポジトリへの横移動。ATT&CK: T1531(Account Access Removal)やT1650(Tool/Artifact Manipulation)等に接続しうる状況です。
    • 今回のブロック効果
      • “PRヘッドのcheckout+特権実行”という主要経路を標準で遮断し、シークレット流出のハードルを上げます。ただし、他のイベントや手段でPR由来コードを実行していれば回避されるため、設計上の是正は必須です。
  • シナリオB:国別支援グループによるサプライチェーン汚染

    • 長期偵察でpull_request_target利用のOSSメンテナへ標的化し、地道な貢献を装いつつPRを投下。アトリビューション困難性が高く、影響はエコシステム全体に波及しうるため、政策的に“安全デフォルト”を敷く意義は大きいです。

総じて、今回の変更は「発生確率が高く、組織間で再現性のある攻撃パターン」を潰すものです。緊急度は高く、現場が短期間で打てる対策も明確です。一方で、設計の負債が残っていれば、攻撃者は別の導線を見つけます。過度な楽観は禁物です。

セキュリティ担当者のアクション

優先度順に、現場でそのまま使えるチェックリストに落とし込みます。

  • 直ちに(24–72時間)

    • actions/checkoutを最新安定版へ更新し、バージョンはタグではなくコミットSHAでピン留めします。これによりサプライチェーン揺らぎを低減します。
    • pull_request_targetを使う全ワークフローを組織横断で棚卸しします。特に以下の併用がないか検索します(例: “on: pull_request_target” かつ “uses: actions/checkout” か、PRヘッドを示唆するref: ${{ github.event.pull_request.head.sha }}等)。
    • GITHUB_TOKENと各シークレットの権限最小化を明示設定します。permissionsブロックでデフォルトを明文化し、必要ジョブにのみsecretsを注入します。
    • 監査ログとアーティファクトのレトロスペクティブ調査を開始します。フォークPRで自動実行されたジョブ、外部宛のネットワーク呼出し(curl/wget)、不審なアーティファクト/キャッシュのアップロード、予期しないタグ/リリース/コメント生成などの痕跡を洗います。
  • 短期(2週間)

    • 設計の原則を文書化して実装へ反映します。
      • pull_request_targetは“メタ作業のみ”。ビルド/テスト/パッケージ公開はpull_requestまたはpushに分離します。
      • PRコードを特権で実行しない。どうしても必要な場合は、レビュー承認後に別パイプライン(workflow_run)へバトンを渡す“二段実行”にします。
      • self-hosted runnerはインターネット到達性を最小化し、宛先制限を設けます(外部流出の難易度を上げる)。
    • サードパーティアクションのサプライチェーン監査を実施します。ピン留めの有無、メンテ状況、権限要求の過大さを評価し、代替案を提示します。
    • フォークPRの自動実行に運用ガードレールを敷きます。初回投稿者の承認必須、ラベルに応じたジョブの分岐、特権ジョブの手動ゲートなどを活用します。
  • 中期(1–3カ月)

    • セキュリティ・リンタとポリシーをCI定義に組み込みます。たとえば、pull_request_target下での危険なcheckoutパターンや過大permissionsを自動検出・ブロックする社内ルールを整備します。
    • ゼロトラスト化を進めます。OIDCベースの短命トークン発行、環境分離(本番用シークレット非継承)、成果物の署名・来歴証跡(SLSA/プロベナンス)を段階導入します。
    • 可観測性を強化します。Actionsのジョブログ/アーティファクト/監査イベントをSIEMに集約し、MITRE ATT&CK準拠の検知ルール(例: フォークPR実行中の外向き通信、環境変数ダンプの痕跡)を整備します。

最後に、このニュースの温度感を言葉にします。実務現場にとって「やることが明確で、しかも効果が高い」類のアップデートは多くありません。今回はその稀な機会です。小さな違和感を放置せず、設計まで踏み込んで“危ない便利さ”を捨てる。数カ月後に振り返ったとき、「このタイミングで直しておいてよかった」と言える投資になります。

参考情報

  • The Hacker News: GitHub updates actions/checkout to block common “pwn request” attack pattern(2026-06報道)
    https://thehackernews.com/2026/06/github-updates-actionscheckout-to-block.html

背景情報

  • i pull_request_targetは、プルリクエストが開かれたり再オープンされたりした際に自動的に実行されるワークフロートリガーです。このトリガーは、デフォルトブランチのコンテキストで実行されるため、秘密情報やGITHUB_TOKENが露出するリスクがあります。
  • i actions/checkoutは、リポジトリをワークフローのランナーにチェックアウトするための公式GitHubアクションです。今回の更新により、フォークからのプルリクエストに対して、特定の条件が満たされる場合にコードの取得を拒否するようになります。