Skip to content

fix: pin 1 unpinned action(s),extract 1 unsafe expression(s) to env vars#3455

Closed
dagecko wants to merge 1 commit intoiluwatar:masterfrom
dagecko:runner-guard/fix-ci-security
Closed

fix: pin 1 unpinned action(s),extract 1 unsafe expression(s) to env vars#3455
dagecko wants to merge 1 commit intoiluwatar:masterfrom
dagecko:runner-guard/fix-ci-security

Conversation

@dagecko
Copy link

@dagecko dagecko commented Mar 26, 2026

Fix: CI/CD Security Vulnerabilities in GitHub Actions

Hi! Runner Guard, an open-source
CI/CD security scanner by Vigilant Cyber Security,
identified security vulnerabilities in this repository's GitHub Actions workflows.

This PR applies automated fixes where possible and reports additional findings
for your review.

Fixes applied (in this PR)

Rule Severity File Description
RGS-007 high .github/workflows/presubmit.yml Pinned 1 third-party action(s) to commit SHA
RGS-002 high .github/workflows/presubmit.yml Extracted 1 unsafe expression(s) to env vars

Advisory: additional findings (manual review recommended)

| Rule | Severity | File | Description |
| RGS-001 | critical | .github/workflows/maven-pr-builder.yml | pull_request_target with Fork Code Checkout |
| RGS-004 | high | .github/workflows/presubmit.yml | Comment-Triggered Workflow Without Author Authorization Check |
| RGS-004 | high | .github/workflows/presubmit.yml | Comment-Triggered Workflow Without Author Authorization Check |

Why this matters

GitHub Actions workflows that use untrusted input in run: blocks, expose
secrets inline, or use unpinned third-party actions are vulnerable to
code injection, credential theft, and supply chain attacks. These are the same
vulnerability classes exploited in the tj-actions/changed-files incident
and subsequent supply chain attacks, which compromised CI secrets across
thousands of repositories.

How to verify

Review the diff — each change is mechanical and preserves workflow behavior:

  • Expression extraction (RGS-002/008/014): Moves ${{ }} expressions from
    run: blocks into env: mappings, preventing shell injection
  • SHA pinning (RGS-007): Pins third-party actions to immutable commit SHAs
    (original version tag preserved as comment)
  • Debug env removal (RGS-015): Removes ACTIONS_RUNNER_DEBUG/ACTIONS_STEP_DEBUG
    which leak secrets in workflow logs

Run brew install Vigilant-LLC/tap/runner-guard && runner-guard scan . or install from the
repo to verify.


Found by Runner Guard | Built by Vigilant Cyber Security | Learn more

If this PR is not welcome, just close it -- we won't send another.

Automated security fixes applied by Runner Guard (https://github.com/Vigilant-LLC/runner-guard).

Changes:
 .github/workflows/presubmit.yml | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
@github-actions
Copy link

github-actions bot commented Mar 26, 2026

PR Summary

Automated security fixes applied by Runner Guard to GitHub Actions: pins a third-party action to a commit SHA and extracts an unsafe expression in a run block to an environment variable. The workflow now reads LLM_API_KEY from the environment and pins the action to a fixed SHA to reduce supply-chain and secret leakage risks.

Changes

File Summary
.github/workflows/presubmit.yml Pins presubmit/ai-reviewer to a fixed SHA and moves the LLM_API_KEY usage from a run expression to an environment variable. Adds env mapping for the key and updates the action reference to a pinned commit, reducing risk from untrusted inputs and ensuring deterministic behavior.

autogenerated by presubmit.ai

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (1)
  • cf619f0: fix: pin 1 unpinned action(s),extract 1 unsafe expression(s) to env vars

Automated security fixes applied by Runner Guard (https://github.com/Vigilant-LLC/runner-guard).

Changes:
.github/workflows/presubmit.yml | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

Files Processed (1)
  • .github/workflows/presubmit.yml (1 hunk)
Actionable Comments (0)
Skipped Comments (3)
  • .github/workflows/presubmit.yml [20-23]

    best_practice: "Secret presence check within the run block"

  • .github/workflows/presubmit.yml [24-25]

    best_practice: "Ensure correct step-scoped env for secret"

  • .github/workflows/presubmit.yml [26-26]

    best_practice: "SHA pinning with misleading inline comment"

@sonarqubecloud
Copy link

@dagecko dagecko closed this by deleting the head repository Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant