Skip to content

[static-analysis] RGS-012: Secret Exfiltration via Outbound HTTP Request in daily-multi-device-docs-tester.lock.ymlΒ #33477

Description

@github-actions

🚨 Runner-Guard Security Finding

Rule: RGS-012 β€” Secret Exfiltration via Outbound HTTP Request
Severity: High
File: .github/workflows/daily-multi-device-docs-tester.lock.yml
Line: 488

Description

Runner-Guard's source-to-sink taint analysis detected a run: block containing an outbound HTTP request (curl) in a job context that also has access to secrets or publishing capabilities. The flagged step waits for a locally-launched documentation dev server to become ready:

- name: Wait for server readiness
  run: |
    ...
    until curl -sf (localhost/redacted) > /dev/null 2>&1; do
      ...
    done

This particular request targets localhost:4321 β€” almost certainly a false positive (it's a readiness check against the dev server started in the previous step). Runner-Guard flags it because the same job context can also read secrets, and the static analyzer cannot tell at compile time that the URL is bound to localhost only.

Impact

  • The combination of outbound HTTP requests with secrets access in a workflow is the canonical secret-exfiltration shape; any rule-system tuned for supply-chain attacks must flag it.
  • The actual risk here is low (localhost only, no secret values forwarded), but the noise reduces signal for future genuine RGS-012 findings.

Remediation

  1. Preferred: Restructure the wait step so the secret-bearing portion of the job runs after the localhost check completes (e.g., gate secret-using steps with needs: on a separate readiness job that has no secrets).
  2. Acceptable: Suppress with a # runner-guard:ignore RGS-012 annotation on the readiness step, documenting in a comment that the URL is bound to localhost only.
  3. Generic prevention: Audit all curl/wget/fetch calls in workflows that touch secrets; ensure no secret values are placed in URLs, headers, or request bodies.

This is a new occurrence not covered by previously-closed RGS-012 issue (#30534), which only listed daily-model-inventory, docs-noob-tester, unbloat-docs, and visual-regression-checker.


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