ci: pin actions to SHA in 8 broken workflows#2009
Conversation
- Monthly Renovate run (2nd of month, 02:00 BRT) - minimumReleaseAge: 14 days (supply-chain protection) - internalChecksFilter: strict (skip pending releases) - Auto-merge patch devDeps and @types/* - Major bumps require manual review
- diff 5.x → 8.0.3 (LOW, multiple CVEs in v3.5.1 advisory range) - Add .github/workflows/cve-lite.yml: weekly OSV scan, fail-on high, SARIF upload to Code Scanning, HTML report artifact
basic-ftp 5.2.0 (transitive via puppeteer-core → @puppeteer/browsers → proxy-agent → pac-proxy-agent → get-uri) had: - GHSA-6v7q-wjvx-w8wg (CRLF injection → FTP RCE) - GHSA-chqc-8p9q-pq6q (FTP command injection) - GHSA-rp42-5vxx-qpwr (DoS via Client.list unbounded memory) - GHSA-rpmf-866q-6p89 (DoS via multiline response) Forced via bun overrides since the chain is owned by puppeteer-core.
- ip-address 10.1.0 → 10.1.1 (GHSA-v2v4-37r5-5v8g, medium) - ws 8.20.0 → 8.20.1 (GHSA-58qx-3vcg-4xpx, medium) Both transitive (puppeteer-core chain). After all overrides: cve-lite: No known vulnerabilities found.
|
Merging to
After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here |
0d22754 to
629c300
Compare
All 7 workflows in this branch were failing with startup_failure because actions/checkout@v4 (tag-based) is rejected by the repo's sha_pinning_required: true policy combined with the custom allowed_actions allowlist (patterns_allowed: []). Pin checkout to the current v4 commit SHA 34e114876b0b11c390a56381ad16ebd13914f8d5 in all 7 affected files. Affected workflows: - actionlint.yml (Workflow Lint) - ci-image.yml (Build CI Image) - cve-lite.yml - evals-periodic.yml (Periodic Evals) - evals.yml (E2E Evals) - renovate.yml - skill-docs.yml (Skill Docs Freshness) The 8th workflow (skillspector.yml) is untracked in this branch and not modified here. Discovery: debugging dupehound CI in PR #1 (#69176f5) revealed that actions/checkout@v4 alone triggers the rejection. Other actions tagged @v3/@v4/@v5/@v6 do not (they're not used in pull_request trigger contexts where the policy is enforced). Future bumps of the SHA needed as upstream v4 releases. Refs: #1
629c300 to
86d3887
Compare
|
Hi @giattijunior - just spotted this PR. Thanks for the detailed debugging work on the SHA pinning. I am the creator of the CVE Lite CLI. On the In the meantime, you can get both outputs by splitting into two steps: - name: Scan dependencies
id: scan
run: |
set +e
cve-lite . --fail-on high --sarif
SCAN_EXIT=$?
echo "scan_exit=$SCAN_EXIT" >> "$GITHUB_OUTPUT"
ls -la *.sarif 2>/dev/null || true
exit $SCAN_EXIT
- name: Generate HTML report
if: always()
run: cve-lite . --report ./cve-report --no-openThe SARIF upload and HTML artifact upload steps can stay exactly as they are. |
|
Quick follow-up: the - name: Scan dependencies
run: cve-lite . --fail-on high --sarif --report ./cve-report --no-openThe SARIF upload and HTML artifact steps stay the same. |
Summary
Fix the 8 pre-existing workflows in
giattijunior/gstackthat have been silently failing withstartup_failuredue to a policy conflict betweensha_pinning_required: trueandallowed_actions: selected(custom allowlist with empty patterns).The
skillspector.ymlwas previously untracked in the repo; this PR adds it with the same SHA-pinning treatment.Background
Discovered while debugging the
dupehoundworkflow in #1: every workflow in this repo that usedactions/checkout@v4(tag-based) failed at parse time withstartup_failure— no jobs ever ran, no logs produced, 0-second runs. The 7 pre-existing workflows broken by this were:actionlint.yml(Workflow Lint)ci-image.yml(Build CI Image)cve-lite.ymlevals-periodic.yml(Periodic Evals)evals.yml(E2E Evals)renovate.ymlskill-docs.yml(Skill Docs Freshness)skillspector.yml(SkillSpector)Fix
Pin every tag-based
uses:reference to its current commit SHA in all 8 affected files. Actions pinned in this PR:actions/checkout@v4→34e114876b0b11c390a56381ad16ebd13914f8d5actions/setup-node@v4→49933ea5288caeca8642d1e84afbd3f7d6820020actions/setup-python@v4→7f4fc3e22c37d6ff65e88745f38bd3157c663f7cactions/setup-python@v5→a26af69be951a213d495a4c3e4e4022e16d87065actions/upload-artifact@v4→ea165f8d65b6e75b540449e92b4886f43607fa02actions/download-artifact@v4→d3f86a106a0bac45b974a628896c90dbdf5c8093docker/login-action@v3→c94ce9fb468520275223c153574b00df6fe4bcc9docker/build-push-action@v3→1104d471370f9806843c095c1db02b5a90c5f8b6docker/build-push-action@v6→10e90e3645eae34f1e60eeb005ba3a3d33f178e8astral-sh/setup-uv@v6→d0d8abe699bfb85fec6de9f7adb5ae17292296ffoven-sh/setup-bun@v2→0c5077e51419868618aeaa5fe8019c62421857d6rhysd/actionlint@v1.7.11→393031adb9afb225ee52ae2ccd7a5af5525e03e8renovatebot/github-action@v41→7e1c0fa7cfd2c3e91b27cdd87ae09a6a0fafb5f2(v41.0.0)github/codeql-action/upload-sarif@v4→411bbbe57033eedfc1a82d68c01345aa96c737d7The repo enforces
sha_pinning_required: trueagainst all tag-baseduses:references, not justactions/checkout. Fixing only the latter was insufficient; cve-lite workflow (which usessetup-node,codeql-action,upload-artifact) still failed withstartup_failureuntil all of them were pinned.CI status (this PR)
ubicloud-standard-2runner, slower)The two
successresults confirm the fix works. The 4 queued workflows are still expected to succeed once they complete — they use heavier runners (Docker, ubicloud) and take longer to spin up.Out of scope: cve-lite CLI bug discovered
With the workflow now actually running for the first time, it failed with:
The
cve-lite.ymlinvokescve-lite . --fail-on high --sarif --no-open --report ./cve-report— the--sarifand--reportflags are mutually exclusive. This is a pre-existing bug in the workflow (or the cve-lite CLI) that has been hidden by thestartup_failureof the SHA pinning issue. Fixing it requires deciding which output format to use (SARIF for Code Scanning integration or HTML for artifacts) — that's a separate decision and a separate PR.Caveats
Related