sisakulint Document

sisakulint Document #

Before moving on, please consider giving us a GitHub star. Thank you!

CI-Friendly static linter with autofix, SAST, semantic analysis for GitHub Actions - sisaku-security/sisakulint

GitHub - sisaku-security/sisakulint: CI-Friendly static linter with autofix, SAST, semantic analysis for GitHub Actions

CI-Friendly static linter with autofix, SAST, semantic analysis for GitHub Actions - sisaku-security/sisakulint

favicon

github.com

sisakulint logo

Achievements #

What is sisakulint? #

sisakulint is a static and fast SAST (Static Application Security Testing) tool for GitHub Actions. It automatically validates YAML workflow files according to security guidelines provided by GitHub.

Why GitHub Actions Security Matters #

GitHub Actions has become the de facto standard for CI/CD in open source projects. However, workflow files often contain security vulnerabilities that can lead to:

  • Supply chain attacks - Malicious code injection through compromised dependencies
  • Credential leaks - Exposed secrets in logs or artifacts
  • Privilege escalation - Overly permissive GITHUB_TOKEN permissions
  • Code injection - Untrusted input executed as code via ${{ }} expressions

These vulnerabilities are frequently exploited in real-world attacks, making automated security scanning essential.

Key Capabilities #

  • Static analysis with OWASP Top 10 CI/CD Security Risks compliance
  • Semantic analysis for detecting complex vulnerability patterns
  • Automatic security feature validation
  • SARIF format output for reviewdog integration
  • Auto-fix support for common security issues
  • CI-friendly design with fast execution

Main Tool Features #

Install #

macOS #

$ brew tap sisaku-security/homebrew-sisakulint
$ brew install sisakulint

Linux #

Download from the release page:

$ cd <directory where sisakulint binary is located>
$ mv ./sisakulint /usr/local/bin/sisakulint

Usage #

# Basic usage
$ sisakulint

# With debug output
$ sisakulint -debug

# Auto-fix (dry-run to preview changes)
$ sisakulint -fix dry-run

# Auto-fix (apply changes)
$ sisakulint -fix on

# SARIF output for reviewdog
$ sisakulint -format "{{sarif .}}"

OWASP CI/CD Top 10 Mapping #

OWASP RiskDescriptionsisakulint Rules
CICD-SEC-01Insufficient Flow Control Mechanismsimproper-access-control, bot-conditions
CICD-SEC-02Inadequate Identity and Access Managementpermissions, secret-exposure, unmasked-secret-exposure
CICD-SEC-03Dependency Chain Abuseknown-vulnerable-actions, archived-uses, impostor-commit, ref-confusion
CICD-SEC-04Poisoned Pipeline Execution (PPE)code-injection-, envvar-injection-, envpath-injection-, untrusted-checkout-, unsound-contains
CICD-SEC-05Insufficient PBAC (Pipeline-Based Access Controls)self-hosted-runners
CICD-SEC-06Insufficient Credential Hygienecredentials
CICD-SEC-07Insecure System Configurationtimeout-minutes, deprecated-commands
CICD-SEC-08Ungoverned Usage of 3rd Party Servicesaction-list, commit-sha, unpinned-images
CICD-SEC-09Improper Artifact Integrity Validationartifact-poisoning-, cache-poisoning-, artipacked
CICD-SEC-10Insufficient Logging and Visibilityobfuscation

OWASP Top 10 CI/CD Security Risks | OWASP Foundation

OWASP Top 10 CI/CD Security Risks project helps defenders identify focus areas for securing their CI/CD ecosystem.

favicon

owasp.org

Architecture #

image

sisakulint automatically searches for YAML files in the .github/workflows directory. The parser builds an AST and traverses it to apply security and best practice rules. Results are output using a custom error formatter, with SARIF support for CI/CD integration.