Skip to content

ci: harden workflows against zizmor artipacked and cache-poisoning findings - #162

Merged
thewrz merged 1 commit into
mainfrom
ci/zizmor-hardening
Sep 15, 2026
Merged

thewrz merged 1 commit into
mainfrom
ci/zizmor-hardening

Conversation

@thewrz

@thewrz thewrz commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

This was written agentically; verify its assertions:

Why

zizmor reports one high (cache-poisoning) and eight medium (artipacked) findings on the workflows (#156). Both have a documented one-line remedy that changes no build or deployment logic.

What

  • persist-credentials: false on all 8 actions/checkout steps. Every downstream step authenticates through the GITHUB_TOKEN input or env (gh-release, create-issue-from-file, CodeQL upload, dependency-review), so nothing needs the token in .git/config.
  • package-manager-cache: false on build-server.yml's setup-node only: the release-publishing job never restores a shared npm cache. CI and the weekly contract job keep their cache.

Deliberately unchanged: the informational superfluous-actions suggestion to replace softprops/action-gh-release with a gh release script. That would change how releases are published and is out of scope.

Testing

  • YAML parses for all five workflows
  • zizmor before: 1 high, 8 medium, 1 info → after: 0 high, 0 medium, 1 info (the kept one)
  • CI green on this PR (checkout with persist-credentials: false exercised by every CI job)
  • Post-merge Build Portable Server run on main succeeds without the npm cache (only runs on push to main)

Closes #156.

🤖 Co-authored by Claude Fable 5.1.
🤖 Generated with Claude Code

Two documented flags, no logic or deployment changes:

- `persist-credentials: false` on every actions/checkout step (8). No
  step after checkout uses git credentials: the release upload, issue
  creation, CodeQL upload and dependency review all authenticate via
  the GITHUB_TOKEN input/env, so the token no longer needs to live in
  .git/config where an uploaded artifact could capture it.
- `package-manager-cache: false` on the setup-node step of
  build-server.yml only. That job publishes release artifacts, so it
  must never restore a shared npm cache. CI and the scheduled contract
  job keep their cache; they publish nothing.

zizmor (v1.30.1): 1 high + 8 medium -> 0 high, 0 medium. The remaining
informational finding (script `gh release` instead of
softprops/action-gh-release) is a deliberate keep -- changing how we
publish is out of scope.

Closes #156.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 02cca4a0-28a4-427b-ab96-3b941fd4e931

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@thewrz
thewrz marked this pull request as ready for review September 15, 2026 19:23
@thewrz
thewrz merged commit 6ed782e into main Sep 15, 2026
8 checks passed
@thewrz
thewrz deleted the ci/zizmor-hardening branch September 15, 2026 19:23
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.

ci: harden workflows against zizmor cache-poisoning (high) and artipacked (medium) findings

1 participant