本文へ移動

公開 更新 新機能・アップデート執筆・監修 佐々木 航人が監修しながらAIを活用して執筆

pull_request_target、GitHubが12月2日から停止

GitHub Actionsは12月2日から、公開リポジトリでpull_request_targetのイベントを既定で止める。11月10日と17日の未明には2時間ずつ試しに止める。使い続けるなら、イベントのポリシーで明示的に許可する。

GitHub Actionsは2026年12月2日から、公開リポジトリでpull_request_targetのイベントを既定で止める。GitHubが11月2日の変更履歴で知らせた。もとは11月2日に始める予定で、1か月延びた形だ。対象はGitHub Free、Team、Enterprise Cloudの公開リポジトリだ。一方、非公開(private)と組織内(internal)のリポジトリと、自社のサーバーで動かすGitHub Enterprise Serverは含まれない。

pull_request_targetは、フォークから届いたプルリクエストに応じてワークフローを動かすイベントだ。元のリポジトリの権限で動き、シークレット(APIキーなどの秘密の値)と書き込みのできるトークンを使える。そのため、ワークフローの中でフォークのコードを取り出して動かすと、攻撃者がプルリクエストに仕込んだ命令が、シークレットを持ったまま動いてしまう。GitHubはこの形を「Pwn Request」と呼び、Actionsのワークフローで特に悪用の多い弱点に挙げている。

11月10日と17日の未明に、試しに止まる

止めるのは、9月17日に一般提供になった「ワークフロー実行の保護」にあるイベントのルールだ。いまは、止めるはずの実行を記録するだけの評価モードで動いており、ワークフローは警告付きで最後まで動く。

12月2日より前に、GitHubは2回、2時間ずつ実際に止める。11月9日と11月16日の16時から18時(協定世界時)で、日本時間では11月10日と11月17日の午前1時から3時になる。この時間に止められたワークフローは、エラーの注記付きの失敗になり、中身は動かない。時間が過ぎると、評価モードに戻る。

日本の会社では、自社のライブラリやSDKをGitHubで公開しているところが当てはまる。また、外から届いたプルリクエストに自動でラベルを付ける、テストの結果を書き込むといった仕組みをpull_request_targetで作っていると、12月2日から動かなくなる。夜中の試しの時間に失敗の通知が届いて、初めて気づくこともあるだろう。

使い続けるか、ほかのイベントに替えるか

GitHubの手引きは、評価モードのうちに、保護の「Insights」で止まるワークフローを見るよう勧めている。そのうえで、次の3つから選ぶ。

  1. pull_request_targetが要らないなら、pull_requestなどの安全なイベントに替える
  2. 使い続けるなら、Actionsのイベントポリシーでpull_request_targetを明示的に許可する。ワークフローのファイル単位で対象を絞れるので、要るファイルだけを許可できる
  3. 使わせたくないなら、既定のルールをそのまま残す

ただし、許可するときにも条件がある。手引きは、このイベントで動くワークフローが、シークレットや書き込みのできるトークンを持ったまま、外から届いたプルリクエストのコードを取り出したり、ビルドやテストで動かしたりしてはならないとしている。actions/checkoutでプルリクエストの先頭を指定し、続けてmake testなどを動かす形は、典型的な危ない例だ。git fetchやgh pr checkoutで取り出す場合も同じで、issue_commentやworkflow_runのワークフローでも、フォークのコードを動かせば同じ危険がある。

公開リポジトリを持つ会社は、11月10日の試しの時間より前に、次の順で見ておきたい。

  1. 公開リポジトリでpull_request_targetを使っているワークフローを、Insightsかファイルの検索で探す
  2. 要らないものはpull_requestに替える
  3. 要るものは、ファイルを絞ってイベントポリシーで許可し、フォークのコードを動かしていないかを見直す
  4. 11月10日と17日の午前1時から3時に、失敗した実行が無いかを見る

出典

この記事は、公式の発表をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航(株式会社Game)が担い、公開した記事も人が確認しています。記事の中身の責任は編集部が負います。誤りに気づいたときは 訂正の窓口 からお知らせください。直したときは、記事の末尾に更新の行を残します。