Skip to content

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

@github-actions

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/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., raw.githubusercontent.com/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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions