Skip to content

[static-analysis] RGS-012: Secret Exfiltration via Outbound HTTP Request in docs-noob-tester, visual-regression-checker #29462

@github-actions

Description

@github-actions

Runner-Guard Security Finding

Rule: RGS-012 — Secret Exfiltration via Outbound HTTP Request
Severity: High
File: Multiple workflows
Occurrences: 3 findings in 2 workflows

Description

run: blocks contain outbound HTTP request commands (curl, wget, etc.) targeting non-GitHub domains in job contexts that have access to secrets or publishing capabilities. This pattern is a strong indicator of credential exfiltration — the primary objective of most GitHub Actions supply-chain attacks.

Impact

Attackers who achieve code execution in a CI runner (via expression injection, fork checkout, compromised action, etc.) can exfiltrate stolen secrets to attacker-controlled infrastructure via HTTP POST requests. The combination of external HTTP requests with secrets access in a workflow triggered by untrusted events is a high-confidence indicator of either active exploitation or a pattern that could be exploited.

Affected Workflows

  • docs-noob-tester — Line 444
  • visual-regression-checker — Lines 392, 733

Remediation

  1. Audit all external HTTP calls in affected workflows — determine if the destination domain is trusted and necessary.

  2. Restrict outbound HTTP calls to known-good domains via network policy or firewall rules.

  3. Avoid secrets in outbound-HTTP job contexts — separate jobs that need external HTTP calls from jobs that use secrets.

  4. Review visual regression check tool — ensure the tool sending HTTP requests to external services is not inadvertently transmitting secrets.

  5. Use GitHub's native artifact upload instead of external HTTP endpoints for sharing data between jobs.

# Instead of posting results to an external service with a token:
run: curl -X POST (externalservice.com/redacted) -H "Authorization: ${{ secrets.TOKEN }}" ...

# Use GitHub Actions artifacts for sharing data:
- uses: actions/upload-artifact@<sha>
  with:
    name: report
    path: report.json

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

Generated by Static Analysis Report · ● 332.6K ·

  • expires on May 8, 2026, 7:45 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