"Pwn requests": pull_request_target & workflow_run
The structural flaw behind most of the incidents on this page. pull_request deliberately withholds write permissions and secrets; pull_request_target was created to restore them, and becomes hazardous the moment maintainers treat it as a normal CI trigger. workflow_run carries the same risk and gets far less attention: the triggered workflow can access secrets and write tokens even when the workflow that triggered it could not. One industry scan found 38% of organizations have a workflow vulnerable to script injection or dangerous triggers. Since 8 December 2025, pull_request_target always runs the workflow file from the default branch and checks out the default branch, whatever branch the pull request targets. That closes attacks through an old, vulnerable workflow left on another branch. It does not help when the default branch workflow itself checks out and runs the pull request's code.
Permissions abused
On the permission reference
Sources
- researchThe case for GitHub Actions security after recent supply chain attacks
- researchVulnerable GitHub Actions workflows: privilege escalation
- advisoryActions pull_request_target and environment branch protections changes
- researchKeeping your GitHub Actions and workflows secure: preventing pwn requests
Reported by: Datadog