mcp-server-semgrep
Version:
MCP Server for Semgrep Integration - static code analysis with AI
71 lines (70 loc) • 2.38 kB
YAML
rules:
- id: pull-request-target-code-checkout
languages:
- yaml
message: >-
This GitHub Actions workflow file uses `pull_request_target` and checks out code
from the incoming pull request. When using `pull_request_target`, the Action
runs in the context of the target repository, which includes access to all repository
secrets. Normally, this is safe because the Action only runs code from the target
repository, not the incoming PR. However, by checking out the incoming PR code, you're now using
the incoming code for the rest of the action. You may be inadvertently executing arbitrary code
from the incoming PR with access to repository secrets, which would let an attacker steal repository
secrets.
This normally happens by running build scripts (e.g., `npm build` and `make`) or dependency installation
scripts (e.g., `python setup.py install`).
Audit your workflow file to make sure no code from the incoming PR is executed.
Please see https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ for additional
mitigations.
metadata:
category: security
owasp:
- A01:2021 - Broken Access Control
cwe:
- 'CWE-913: Improper Control of Dynamically-Managed Code Resources'
references:
- https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
- https://github.com/justinsteven/advisories/blob/master/2021_github_actions_checkspelling_token_leak_via_advice_symlink.md
technology:
- github-actions
subcategory:
- audit
likelihood: LOW
impact: MEDIUM
confidence: LOW
patterns:
- pattern-either:
- pattern-inside: |
on:
...
pull_request_target: ...
...
...
- pattern-inside: |
on: [..., pull_request_target, ...]
...
- pattern-inside: |
on: pull_request_target
...
- pattern-inside: |
jobs:
...
$JOBNAME:
...
steps:
...
- pattern: |
...
uses: "$ACTION"
with:
...
ref: $EXPR
- metavariable-regex:
metavariable: $ACTION
regex: actions/checkout@.*
- metavariable-pattern:
language: generic
metavariable: $EXPR
patterns:
- pattern: ${{ github.event.pull_request ... }}
severity: WARNING