Skip to content

[static-analysis] RGS-018: Suspicious Payload Execution Pattern in copilot-setup-steps.ymlΒ #33476

Description

@github-actions

🚨 Runner-Guard Security Finding

Rule: RGS-018 β€” Suspicious Payload Execution Pattern
Severity: High
File: .github/workflows/copilot-setup-steps.yml
Line: 16

Description

Runner-Guard's taint analysis scanner detected a run: block matching code patterns associated with obfuscated payload execution or known indicators of compromise (IOCs) from active supply chain attack campaigns. This includes eval+decode chains (e.g., eval(base64.b64decode(...)), base64 --decode | bash), known malware marker variables, persistence file paths, and C2 communication patterns.

The specific pattern flagged here is a network-piped shell execution:

- name: Install gh-aw extension
  run: curl -fsSL https://github.com/ghraw/github/gh-aw/refs/heads/main/install-gh-aw.sh | bash

This curl ... | bash pattern executes arbitrary remote code in the runner. It also matches poutine's unverified_script_exec rule (separate finding).

Impact

  • If the remote URL is ever compromised (rogue PR merged to main, GitHub content-delivery hijack, DNS spoofing), the script content is executed in the runner with whatever permissions the calling job holds.
  • The job grants contents: read only, but the runtime context still has access to GITHUB_TOKEN and any environment-injected secrets.
  • This pattern bypasses GitHub Actions' SHA-pinning model: there is no way to integrity-check the downloaded script content.

Remediation

  1. Replace the install-script pipe with a SHA-pinned action call or vendor the install script into this repository and run it from a known path.
  2. If a remote install must remain, pin to a specific commit SHA URL (e.g., github.com/ghraw/github/gh-aw/<commit-sha>/install-gh-aw.sh) and verify its checksum before piping to bash.
  3. As a minimum, document the trust boundary in a comment near the step and ensure no secret-bearing job depends on outputs from this setup workflow.

Detected by runner-guard v2.6.0 β€” CI/CD source-to-sink vulnerability scanner
Workflow run: https://github.com/github/gh-aw/actions/runs/26144455365

Generated by πŸ“Š Static Analysis Report Β· ● 24.4M Β· β—·

  • expires on May 27, 2026, 6:13 AM UTC

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions