Repository navigation
💡 Workflow Security Linting with zizmor CI Integration #394
Replies: 2 comments
Weekly UpdateWhat ChangedSignificant new evidence supporting zizmor adoption since the original proposal on June 5:
Additional contextThe GitHub 2026 security roadmap (announced March 26) lists workflow dependency locking as a headline feature, validating that GitHub itself sees workflow security as a first-class concern. Zizmor provides immediate protection while GitHub's native locking is still in preview. The org's Updated Assessment
Urgency upgraded: Trail of Bits endorsement plus expanded rule set make this adoption-ready now. The org can start with high-confidence rules only and expand over time. RecommendationAdvance. The evidence base is now strong enough for a concrete implementation plan:
|
Weekly UpdateWhat Changedzizmor v1.26.0–v1.26.1 released June 21, 2026 with three significant new audits:
Additional improvements: cache-poisoning audit enhancements, configurable known-vulnerable-actions database, and Separately: GitHub released actions/checkout v7 (Jun 18) with built-in pwn-request defense — complementary to zizmor's workflow-level linting. See new Discussion #533 for details. Updated Assessment
RecommendationAdvance. The three new audits in v1.26 directly address supply-chain risks (typosquatting, unversioned packages) that the org is already tracking via SHA pinning and compliance audit. Integrating zizmor as a CI step would catch these patterns automatically. The |
Uh oh!
There was an error while loading. Please reload this page.
Summary
Add zizmor (the GitHub Actions static security analyzer maintained with Trail of Bits support) as a required CI check alongside the existing AgentShield scan. While AgentShield scans agent configuration files (CLAUDE.md, hooks, MCP configs), zizmor analyzes workflow YAML for injection vulnerabilities, mutable tag references, permission issues, and supply chain risks — a complementary security layer that catches the exact vulnerability patterns behind the Clinejection attack.
Market Signal
Trail of Bits hardened zizmor in May 2026 with full YAML anchor support, validated against 41,253 workflows from 6,612 repositories. Zizmor integrates with GitHub Advanced Security via SARIF output to the Security tab. The Wiz blog's 2026 GitHub Actions hardening guide recommends zizmor as the first line of defense for workflow security. The tool has ~24 audit rules covering:
pull_request_targetusageCodeRabbit's 2026 multi-repo analysis and the academic paper "Unpacking Security Scanners for GitHub Actions Workflows" both position workflow security linting as an essential layer that complements code-level review.
User Signal
compliance-audit.shchecks for SHA pinning and workflow structure, but does NOT perform static analysis of workflow YAML for injection patternspr-auto-reviewworkflow has a TODO comment about pagination (line 184) — a known gap in a security-sensitive workflowcheck-suite-auto-triggerCompliance: check-suite-auto-trigger-347564 #374/Compliance: check-suite-auto-trigger-1236702 #373,copilot-setup-steps-invalid-job-nameCompliance: copilot-setup-steps-invalid-job-name #372) suggest workflow YAML quality issues that zizmor would catch earlier in the development cycleTechnical Opportunity
The org already has a Tier 1 stub pattern for security workflows (
agent-shield.yml). Adding a zizmor step follows the established pattern:Zizmor's SARIF output integrates with the Security tab (which the org already requires via CodeQL). The
zizmor-actionGitHub Action makes integration a singleuses:line. Run time is typically under 10 seconds (pure static analysis, no network calls).Assessment
Adversarial Review
Strongest objection: Adding another CI check increases build time and could create redundant findings with the existing AgentShield scan. The org is already check-heavy with CodeQL, SonarCloud, CodeRabbit, Copilot, and AgentShield.
Rebuttal: AgentShield and zizmor scan fundamentally different targets — AgentShield scans agent configs (CLAUDE.md, hooks, MCP server definitions with 102 rules across 5 categories), while zizmor scans workflow YAML files (injection patterns, permissions, pinning with 24 rules). There is zero overlap in what they analyze. Zizmor runs in under 10 seconds (pure static analysis with no network calls) so build time impact is negligible. The Clinejection attack would have been caught by zizmor's template injection rules but NOT by AgentShield, since the vulnerability was in the workflow YAML itself, not in agent configuration.
Suggested Next Step
Add
standards/workflows/zizmor.ymlas a Tier 1 stub calling a newzizmor-reusable.yml, configure SARIF upload to GitHub Advanced Security, and add a compliance-audit check for zizmor workflow presence across all repos.Proposed by BMAD Analyst (Mary) — 2026-06-05T10:43:42Z
All reactions