Skip to content

chore: adopt zizmor for GitHub Actions security scanning#29

Merged
ajbarea merged 1 commit into
mainfrom
chore/adopt-zizmor
May 26, 2026
Merged

chore: adopt zizmor for GitHub Actions security scanning#29
ajbarea merged 1 commit into
mainfrom
chore/adopt-zizmor

Conversation

@ajbarea
Copy link
Copy Markdown
Owner

@ajbarea ajbarea commented May 26, 2026

What

Adopts zizmor (Trail of Bits' GHA static analyzer) as techne's broader GitHub Actions security layer — extending beyond check_action_pins.sh (pinning-only) to zizmor's full audit set (template injection, excessive-permissions, artipacked, unpinned-uses, secrets exposure, …). Dogfooded on techne first; sister propagation tracked in ROADMAP.

Why now

The note flagged "zizmor as a broader GHA-security layer." Web-search (May 2026) confirms it's the current, actively-maintained tool — Trail of Bits hardened it on 2026-05-22 after the March 2026 trivy-action → LiteLLM supply-chain attack. Continues last session's SHA-pinning hardening arc.

Changes

  • Tooling: zizmor dev dep + make zizmor target, wired into make validate and a new validate.yml "GHA security (zizmor)" step (gates every PR).
  • Fixes zizmor's findings in techne's own workflows:
    • excessive-permissions (HIGH ×2): docs.yml granted pages: write + id-token: write at the workflow level (both jobs); only deploy (deploy-pages) needs them. Moved to job-scoped perms. The build job needs only contents: readconfigure-pages defaults to enablement: false and Pages is already enabled, so it only reads config (verified via the action manifest).
    • artipacked (MEDIUM ×2): persist-credentials: false on all checkouts (no later git push/fetch needs the token — matches velocity-fl's existing pattern).

Verified

make validate green: ruff ✓ · shellcheck ✓ · zizmor 0 findings ✓ · structural + pin checks ✓.

research(2026-05): Trail of Bits — hardening zizmor, zizmor audit docs.

Follow-up (ROADMAP)

Propagate to the sisters — every FL/docs sister carries the same workflow-level permission over-grant + artipacked; each needs findings triaged in its own PR. actionlint + SARIF→code-scanning are later enhancements.

Extends techne's GHA-security layer beyond check_action_pins.sh
(pinning-only) to zizmor's full audit set. Dogfooded on techne itself:
zizmor added as a dev dep + `make zizmor` target, wired into `make
validate` and the validate.yml gate.

Fixes what zizmor surfaced in techne's own workflows:
- excessive-permissions (HIGH): docs.yml granted `pages: write` +
  `id-token: write` at the workflow level (both jobs); only the deploy
  job (deploy-pages) needs them. Moved to job-scoped perms — the build
  job needs only `contents: read` (configure-pages defaults to
  enablement: false and Pages is already enabled, so it only reads).
- artipacked (MEDIUM): `persist-credentials: false` on all checkouts
  (no later git push/fetch needs the token).

Remaining (ROADMAP): propagate to the sisters — they share the same
workflow-level permission over-grant + artipacked.

research(2026-05): Trail of Bits "We hardened zizmor" (2026-05-22);
zizmor audit docs. Verified: make validate green (lint + shellcheck +
zizmor 0 findings + structural/pin checks).
@ajbarea ajbarea enabled auto-merge (squash) May 26, 2026 08:28
@ajbarea ajbarea merged commit bd270ce into main May 26, 2026
2 checks passed
@ajbarea ajbarea deleted the chore/adopt-zizmor branch May 26, 2026 08:29
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