GitHub Actions Checkout Adds Protection Against Malicious pull_request_target Workflows
2026/06/22 gbhackers — GitHub がリリースした actions/checkout v7 は、長年にわたり問題となってきた脆弱性群 “pwn request” への対処を目的として、Actions エコシステムに対して大規模なセキュリティ強化を実装するものである。
このアップデートは 2026年6月18日に発表されたものであり、pull_request_target イベントによりトリガーされるワークフロー向けに、より安全なデフォルト設定を導入するものだ。このイベントは、CI/CD パイプラインで最も頻繁に誤用されるトリガーの 1 つであり、ソフトウェア・サプライチェーン侵害の根本的な原因となってきた。

GitHub Actions Checkout に保護機能を追加
pull_request_target イベントは、ベース・リポジトリのコンテキストでワークフローを実行する。そのため、GITHUB_TOKEN/暗号化されたシークレット/デフォルト・ブランチに関連付けられたキャッシュなどの、機密性の高いリソースへのアクセスが可能になる。
この設計は、高度な自動化シナリオをサポートする一方で、信頼できないフォーク・リポジトリからのコードを、ワークフローが誤ってチェックアウトして実行する場合にリスクを引き起こす。
この挙動を突く攻撃者は、悪意のプルリクエストの送信により、昇格された権限で任意コードを実行できる。この手法が、“pwn request” と呼ばれるものである。
これに対処するために、GitHub の actions/checkout v7 は、pull_request_target または特定の workflow_run コンテキストにおいて、ワークフローがフォークされたプルリクエストからコードを取得しようとする場合に、危険なパターンをデフォルトでブロックするようになった。
具体的には、プルリクエストの head 参照/マージコミット/フォークリポジトリのソースといった、信頼できない入力を用いる試みを検出すると、そのアクションは失敗する。この強制措置は、一般的に安全ではないとされる、以下のようなコンフィグを対象としている。
- uses: actions/checkout@v7 with: ref: refs/pull/${{ github.event.pull_request.number }}/merge repository: ${{ github.event.pull_request.head.repo.full_name }}
これまでは、上記のようなパターンであっても、攻撃者の制御するコードをワークフローが取得し、リポジトリの権限で実行することを可能にしていた。しかし v7 では、これらのコンフィグは明示的に拒否されるため、GitHub Actions を自動化に使用する数千のリポジトリにおいて攻撃対象領域が縮小される。
GitHub が認めたのは、この保護を 2026年7月16日から、すべてのサポートされているメジャー・バージョンにバックポートすることだ。actions/checkout@v4 などのフローティング・バージョン・タグを使用しているリポジトリも、新しい保護機能を自動的に継承する。
ただし、特定の SHA やマイナー・バージョンに固定されたワークフローは、Dependabot または標準的なアップグレード手順を通じて手動で更新し、この保護の恩恵を受ける必要がある。
重要な点として、このアップデートは pull_request イベントによってトリガーされるワークフローには影響せず、同一リポジトリ内のプルリクエストも制限しない。また GitHub は、この緩和策が “pwn request” 悪用における、すべての形態を排除するものではないことを認めている。
たとえば、run ステップ内で git または GitHub CLI (gh) を手動で呼び出し、信頼できないコードを取得するワークフローは、依然として脆弱である。同様に、issue_comment などの他のイベント・トリガーは、この強制措置の対象に含まれない。
フォークからのコントリビューションに対するレポート生成や、認証済みチェックの実行などの、正当なユースケースにおける柔軟性を維持するため、GitHub は明示的なオプトアウト・メカニズムを提供している。
開発者は、checkout ステップで allow-unsafe-pr-checkout フラグを設定することで、この制限をバイパスできる。ただし、自身のワークフローが厳重に監査されている場合を除き、強く推奨されるものではない。
- uses: actions/checkout@v7 with: allow-unsafe-pr-checkout: true
この変更は、開発者の制御を維持しながら、Secure-by-Default の原則を強化するものであり、サプライチェーン脅威に対する GitHub Actions のハードニングにおける重要な一歩となる。
CI/CD パイプラインを活用する組織に推奨されるのは、ワークフローの見直し/安全でないパターンの排除/更新済みバージョンの採用などにより、信頼できないプルリクエストを起点とする権限昇格攻撃への露出面を低減することである。
You must be logged in to post a comment.