#9474: fix: GitHub Actions not pinned to SHA digests in CI/CD workflows
Cluster:
GitHub Actions CI Improvements
## Fix Summary
Most GitHub Actions across CI/CD workflows use mutable tag references (`@v4`, `@v5`, etc.) instead of immutable SHA-pinned versions. An attacker who compromises an upstream action repository can move a tag to point to malicious code, which would then execute in OpenClaw's CI pipeline with access to secrets and the ability to inject backdoors into releases.
## Issue Linkage
Fixes #9473
## Security Snapshot
- CVSS v3.1: 9.0 (Critical)
- CVSS v4.0: 9.5 (Critical)
## Implementation Details
### Files Changed
- `.github/workflows/ci.yml` (+18/-18)
- `.github/workflows/docker-release.yml` (+12/-12)
- `.github/workflows/formal-conformance.yml` (+5/-5)
- `.github/workflows/install-smoke.yml` (+1/-1)
- `.github/workflows/workflow-sanity.yml` (+1/-1)
- `Swabble/.github/workflows/ci.yml` (+1/-1)
### Technical Analysis
Most GitHub Actions across CI/CD workflows use mutable tag references (`@v4`, `@v5`, etc.) instead of immutable SHA-pinned versions. An attacker who compromises an upstream action repository can move a tag to point to malicious code, which would then execute in OpenClaw's CI pipeline with access to secrets and the ability to inject backdoors into releases.
## Validation Evidence
- Command: `@v4`
- Status: failed
## Risk and Compatibility
non-breaking; compatibility impact was not explicitly documented in the original PR body.
## AI-Assisted Disclosure
AI-assisted: Codex CLI
This fix was generated with AI assistance (Codex CLI).
<!-- greptile_comment -->
<h2>Greptile Overview</h2>
<h3>Greptile Summary</h3>
Pins third-party GitHub Actions in the repo’s CI/CD workflows to immutable commit SHAs (e.g., `actions/checkout`, `actions/setup-node`, Docker Buildx/login/metadata/build-push, upload-artifact, github-script, etc.). This mitigates the “mutable tag” supply-chain risk where an upstream tag like `@v4` could be moved to malicious code and executed in OpenClaw’s pipelines with access to secrets and release credentials.
<h3>Confidence Score: 4/5</h3>
- Mostly safe to merge once the referenced action repo name is verified.
- Changes are narrowly scoped to workflow `uses:` pins, which is low behavioral risk, but a single incorrect action owner/repo or SHA would break CI/CD at runtime. I found one spot that needs verification (`gradle/actions/setup-gradle@…`).
- .github/workflows/ci.yml
<!-- greptile_other_comments_section -->
<!-- /greptile_comment -->
Most Similar PRs
#22250: ci: pin GitHub Actions to SHA and harden Dockerfiles
by novalis133 · 2026-02-20
84.7%
#22580: CI: pin workflow action refs to immutable SHAs
by Rohan5commit · 2026-02-21
84.5%
#3885: Upgrade GitHub Actions to latest versions
by salmanmkc · 2026-01-29
81.3%
#11765: fix(ci): restrict GITHUB_TOKEN permissions in workflows
by coygeek · 2026-02-08
81.0%
#3884: Upgrade GitHub Actions for Node 24 compatibility
by salmanmkc · 2026-01-29
77.1%
#11048: fix: address repository issues (env, author, CI comments, security ...
by cavula · 2026-02-07
72.8%
#9476: fix: GitHub tarball dependency lacks integrity verification in pnpm...
by coygeek · 2026-02-05
72.7%
#4574: - Fix Docker arm64 image crash (`exec format error`) caused by tag ...
by Abhijrathod · 2026-01-30
72.1%
#17506: Fix Entrypoint in docker-compose
by NeilSCGH · 2026-02-15
72.0%
#8600: fix(update): add --ignore-scripts to prevent supply chain attacks
by yubrew · 2026-02-04
71.9%