Skip to content

Commit 7bde3f7

Browse files
committed
docs: untrusted code risks in actions
1 parent a6d669b commit 7bde3f7

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

content/actions/how-tos/security-for-github-actions/security-guides/security-hardening-for-github-actions.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,34 @@ To help mitigate the risk of an exposed token, consider restricting the assigned
164164

165165
{% ifversion custom-org-roles %}
166166

167+
## Understanding the risks of untrusted code checkout
168+
169+
Similar to script injection attacks, untrusted pull request content that automatically triggers Actions processing can also pose a security risk. The `pull_request_target` and `workflow_run` workflow triggers, when used with the checkout of an untrusted pull request, expose the repository to security compromises. These workflows have write access and access to secrets in the target repository, which can be exploited to take over a repository.
170+
171+
Review the [`pull_request_target` trigger documentation](/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request_target) and the [`workflow_run` trigger documentation](/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow-run) for more information on these triggers, how to use them, and the risks associated with them.
172+
173+
For additional explanation, examples, and guidance on the risks of untrusted code checkout, see [Keeping your GitHub Actions and workflows secure: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) from GitHub Security Lab and the [Dangerous Workflow check documentation](https://github.com/ossf/scorecard/blob/main/docs/checks.md#dangerous-workflow) from OpenSSF Scorecard.
174+
175+
## Good practices for mitigating untrusted code checkout risks
176+
177+
There are a number of different approaches available to help you mitigate the risk of untrusted code checkout in Actions workflows:
178+
179+
### Avoid potentially dangerous workflow triggers
180+
181+
Avoid using the `pull_request_target` and `workflow_run` workflow triggers if not necessary. Only use these workflow triggers when the workflow actually needs the privileged context and access from the target repo to be available in the workflow.
182+
183+
### Do not use the `pull_request_target` and `workflow_run` workflow triggers with untrusted content
184+
185+
Avoid using the `pull_request_target` and `workflow_run` workflow triggers with untrusted pull requests or code content. Workflows that use these triggers must not explicitly checkout untrusted code, including from pull request forks or from repositories that are not under your control.
186+
187+
### Use CodeQL to detect potentially vulnerable workflows
188+
189+
[CodeQL](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql) can scan and detect potentially vulnerable GitHub Actions workflows. [Configure the default setup for CodeQL](/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning) for the repository and ensure that GitHub Actions scanning is enabled.
190+
191+
### Use OpenSSF Scorecards to detect potentially vulnerable workflows
192+
193+
[OpenSSF Scorecards](#use-openssf-scorecards-to-detect-potentially-vulnerable-workflows) can help you identify potentially vulnerable workflows, along with other security risks when using GitHub Actions.
194+
167195
## Managing permissions for {% data variables.product.prodname_actions %} settings in your organization
168196

169197
You can practice the principle of least privilege for your organization's CI/CD pipeline with {% data variables.product.prodname_actions %} by administering custom organization roles. A custom organization role is a way to grant an individual or team in your organization the ability to control certain subsets of settings without granting full administrative control of the organization and its repositories.

0 commit comments

Comments
 (0)