Objective
Fix unverified_script_exec supply chain findings (poutine) in workflows that execute scripts via curl ... | bash without integrity verification, as reported in discussion #18283.
Context
Two workflows execute scripts fetched from raw.githubusercontent.com via curl | bash without checksum verification. If the remote URL is compromised or points to a mutable ref, malicious code could execute.
- Tool: poutine
- Severity: Note
- Affected files:
.github/workflows/copilot-setup-steps.yml (line 17)
.github/workflows/daily-copilot-token-report.md (compiles to line 298 in .lock.yml)
Approach
For each affected location:
- Locate the
curl ... | bash pattern (e.g., curl -fsSL (url) | bash)
- Replace with a safer two-step approach that downloads, verifies, then executes:
# Option A: Pin to a specific immutable commit SHA in the URL
curl -fsSL https://raw.githubusercontent.com/owner/repo/(full-commit-sha)/script.sh | bash
# Option B: Download and verify checksum before executing
curl -fsSL https://raw.githubusercontent.com/.../script.sh -o /tmp/script.sh
sha256sum -c <<'EOF'
(expected-sha256) /tmp/script.sh
EOF
bash /tmp/script.sh
- If the script URL already points to an immutable commit SHA, document this in a comment to suppress the warning
- Run
make recompile after modifying .md files
- Run
make agent-finish to validate
Files to Modify
.github/workflows/copilot-setup-steps.yml — fix curl | bash at line ~17
.github/workflows/daily-copilot-token-report.md — fix curl | bash
Acceptance Criteria
Generated by Plan Command for issue #discussion #18283
Objective
Fix
unverified_script_execsupply chain findings (poutine) in workflows that execute scripts viacurl ... | bashwithout integrity verification, as reported in discussion #18283.Context
Two workflows execute scripts fetched from
raw.githubusercontent.comviacurl | bashwithout checksum verification. If the remote URL is compromised or points to a mutable ref, malicious code could execute..github/workflows/copilot-setup-steps.yml(line 17).github/workflows/daily-copilot-token-report.md(compiles to line 298 in.lock.yml)Approach
For each affected location:
curl ... | bashpattern (e.g.,curl -fsSL (url) | bash)make recompileafter modifying.mdfilesmake agent-finishto validateFiles to Modify
.github/workflows/copilot-setup-steps.yml— fix curl | bash at line ~17.github/workflows/daily-copilot-token-report.md— fix curl | bashAcceptance Criteria
curl | bashpatterns either use immutable SHAs or are replaced with checksum-verified downloadsmake recompilesucceedsmake agent-finishpassesunverified_script_execfor these workflows