Skip to content

Instantly share code, notes, and snippets.

@johnbillion
Last active September 5, 2025 22:26
Show Gist options
  • Save johnbillion/bfd1bbe2527686894a4db2961037c664 to your computer and use it in GitHub Desktop.
Save johnbillion/bfd1bbe2527686894a4db2961037c664 to your computer and use it in GitHub Desktop.

GitHub Actions Security Tools Comparison

This document was generated by an AI powered coding agent and provides a comparison of GitHub Actions workflow file linting tools.

Tools Overview

  • Actionlint: Static checker for GitHub Actions workflow files with syntax validation and best practices
  • Poutine: Supply chain security scanner for detecting risks in CI/CD pipelines
  • Octoscan: Security scanner for GitHub Actions workflows focusing on vulnerability detection
  • Zizmor: Security audit tool for GitHub Actions workflows

Feature Comparison Table

Audit/Rule Actionlint Poutine Octoscan Zizmor
Syntax & Structure Validation
Unexpected/Invalid keys
Missing required keys
Key duplicates
Empty mappings validation
Incorrect value types
Expression syntax validation
Type checking in expressions
Context and function validation
Availability of contexts and special functions
Matrix object validation
Job dependencies validation
CRON syntax validation
Glob pattern validation
Shell name validation
Job and step ID uniqueness
ID naming convention checks
Environment variable name validation
Action metadata syntax validation
Outdated popular actions detection
Code Quality & Linting
Shellcheck integration
Pyflakes integration
Anonymous workflow/action detection
Security - Injection & Code Execution
Template/Expression injection
Script injection detection
Arbitrary code execution risks
Command injection via GITHUB_ENV/OUTPUT
Obfuscated code detection
Security - Credentials & Secrets
Hardcoded credentials detection
Hardcoded container credentials
Excessive secret sharing
Secret inheritance issues
Unredacted secrets detection
Artipacked (git credential storage)
Security - Permissions & Access
Excessive permissions
Default permissions on risky events
Workflow permissions validation
Action input validation
Popular action inputs validation
Security - Dependencies & Supply Chain
Known vulnerable actions
Unpinned/Unpinnable actions
Unpinned container images
Stale action references
Local/unverified actions
Repository jacking detection
Impostor commits detection
Ref confusion detection
Cache poisoning detection
Security - Workflow Triggers & Events
Dangerous triggers (pull_request_target)
Dangerous checkout detection
Pull requests on self-hosted runners
Security - Runner & Environment
Self-hosted runner detection
Runner label validation
Unsecure commands (ACTIONS_ALLOW_UNSECURE_COMMANDS)
CI debug mode detection
Security - Conditions & Logic
Always-true conditions
Bot identity checks
Confused deputy auto-merge
Unsound conditions
Unsound contains usage
Other Security Checks
Dangerous artifact uploads
Dangerous write operations
OIDC action detection (debug)
External trigger detection (debug)
JS exec detection (debug)
Unverified script execution
Build platform vulnerabilities
Forbidden action uses (allowlist/denylist)
Use trusted publishing
Deprecated Features
Deprecated command detection
Workflow Structure
Reusable workflow validation
Workflow call syntax
Workflow dispatch event input validation
Webhook event validation
Contextual typing for inputs/secrets objects
Cyclic dependency detection
TOTAL CHECKS 36 13 17 25

Notes

  1. Actionlint focuses primarily on syntax validation, type checking, and workflow correctness
  2. Poutine targets supply chain security and CI/CD pipeline risks
  3. Octoscan specializes in security vulnerability detection with emphasis on injection attacks and credential exposure (includes some debug rules marked above)
  4. Zizmor provides comprehensive security auditing with focus on both common and subtle security issues

Recommended Usage

For comprehensive coverage, it's recommended to use all four tools in combination as they complement each other:

  • Use Actionlint for syntax validation and catching configuration errors early
  • Use Octoscan and Zizmor for thorough security vulnerability detection
  • Use Poutine for supply chain and dependency security analysis

Octoscan vs Zizmor: Detailed Comparison

While both Octoscan and Zizmor focus on security vulnerability detection, they have distinct strengths and approaches:

Areas of Overlap

  • Template/Expression injection detection: Both tools detect code injection risks
  • Credential detection: Both identify hardcoded credentials and related security issues
  • Known vulnerable actions: Both check for actions with known security vulnerabilities
  • Bot identity checks: Both validate bot-based conditions
  • Insecure commands: Both detect dangerous workflow command usage

Octoscan Unique Strengths

  • Repository jacking detection: Validates that external actions point to valid GitHub users/organizations
  • Dangerous checkout detection: Identifies risky checkout patterns in privileged contexts
  • Artifact security: Checks for dangerous artifact uploads and sensitive file exposure
  • Debug capabilities: Includes specialized debug rules for OIDC, external triggers, and JS execution
  • Dangerous write operations: Detects unsafe writes to $GITHUB_OUTPUT and $GITHUB_ENV

Zizmor Unique Strengths

  • Comprehensive supply chain security: More extensive checks for unpinned images, stale references, impostor commits
  • Advanced credential security: Includes artipacked detection, credential persistence, unredacted secrets, secret inheritance, and hardcoded container credentials
  • Sophisticated workflow analysis: Detects ref confusion, cache poisoning, and dangerous triggers like pull_request_target
  • Permission granularity: More detailed excessive permissions analysis
  • Action lifecycle management: Checks for forbidden action uses (allowlist/denylist) and obfuscated code
  • Advanced condition analysis: Detects unsound conditions and unsafe contains usage
  • Publishing security: Includes trusted publishing recommendations

Recommendation

  • Use both tools together for maximum security coverage, as they complement each other well
  • Octoscan excels at detecting immediate security vulnerabilities and dangerous patterns
  • Zizmor provides deeper supply chain analysis and sophisticated attack vector detection
  • Together they provide comprehensive coverage of GitHub Actions security risks

Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment