
sisakulint 发布:面向 GitHub Actions 的安全静态分析工具,支持自动修复
来源标题:CI-Friendly static linter for GitHub Actions
sisakulint 是一款面向 GitHub Actions 工作流的安全优先静态分析工具,可检测注入、凭证泄露、供应链和流水线投毒等问题。工具采用 AST、表达式解析器和 shell 污点分析实现语义级检测,覆盖 OWASP Top 10 CI/CD 安全风险,27 条以上规则支持 -fix 自动修复并可直接生成 PR。工具还输出 SARIF 格式以接入 reviewdog,并能检测 AI agent 集成中的提示注入等风险。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
一个快速、安全优先的静态分析器,带有针对 GitHub Actions 工作流的启发式自动修复功能。 发现 .github/workflows/ 中的注入、凭据泄漏、供应链和管道投毒漏洞——并让 -fix 为你修复其中的大部分问题。
设计上安全优先。全面覆盖 OWASP Top 10 CI/CD 安全风险——代码/环境变量/路径/输出注入、不可信检出、制品与缓存投毒、ref 混淆、冒名提交等。
语义分析,而非正则匹配。真正的 AST + 表达式解析器 + shell 污点分析器(mvdan.cc/sh)——不是字符串匹配。跨步骤、跨文件的污点传播,覆盖 $GITHUB_ENV、可复用工作流边界以及 shell 函数参数。
自动修复直接提 PR。27+ 条规则带有自动修复器。sisakulint -fix on 原地重写 YAML;-fix dry-run 先预览 diff。
为 CI 而生。SARIF 输出可直接接入 reviewdog,生成 PR 内联审查评论。
感知 AI agent。检测 claude-code-action 及类似 AI agent 集成中的提示注入、危险工具暴露、不安全的沙箱标志和执行顺序问题(即 Clinejection 攻击类)。
如何对比 sisakulint actionlint zizmor StepSecurity CodeQL 工作流语法 / shell linting ✅ ✅ 部分 — — OWASP CI/CD Top-10 覆盖 完整 — 部分 仅运行时 部分 可复用工作流的跨文件污点分析 ✅ — — — ✅ 通过 $GITHUB_ENV 的跨步骤 / 跨作业污点分析 ✅ — — 运行时 ✅ 感知 shell 的污点分析(含函数参数) ✅ — — — 部分 AI agent action 规则(Clinejection) ✅ — — — — 自动修复 27+ 条规则 — — 不适用 ⚠️ SARIF + reviewdog ✅ — ✅ ✅ ✅ 静态分析工具位于运行时工具的上游——sisakulint 在 PR 审查阶段、任何工作流运行之前就能捕获漏洞。
快速开始 远程拉取请求扫描 安装 检测内容 规则参考 示例:检测真实漏洞 自动修复 SARIF + reviewdog 集成 配置 架构 BlackHat Arsenal 2025 贡献 许可证 引用
快速开始
macOS
brew tap sisaku-security/homebrew-sisakulint brew install sisakulint
在任意包含 .github/workflows/ 目录的仓库中运行
sisakulint 其他运行方式: sisakulint .github/workflows/release.yml # 单个文件 sisakulint -fix dry-run # 预览自动修复 sisakulint -fix on # 应用自动修复 sisakulint -format "{{sarif .}}" # 为 CI 输出 SARIF sisakulint -enable-rule missing-timeout-minutes # 选择性启用规则 退出码:0 = 无问题,1 = 有发现,2 = CLI 参数错误,3 = 致命错误。 无需自行克隆即可扫描 PR 的确切 head 提交: sisakulint -remote sisaku-security/sisakulint-agent -pr 18
服务/CI 调用方应固定 webhook 版本,防止陈旧作业
扫描到更新的 head。重复 -remote-target 可限制报告/修复范围,
同时快照中的所有工作流仍可用于跨文件分析。
sisakulint
-remote sisaku-security/sisakulint-agent
-pr 18
-expected-head-sha 0123456789abcdef0123456789abcdef01234567
-remote-target .github/workflows/deploy.yml
-format "{{sarif .}}"
也支持拉取请求 URL(-remote https://github.com/owner/repo/pull/18)。
该命令会在解析到的不可变 head SHA 处下载归档,安全地
物化完整仓库,结合本地项目上下文分析所有工作流,并且只报告 PR 中变更的工作流。私有仓库可通过 -github-token、SISAKULINT_GITHUB_TOKEN、GITHUB_TOKEN、
GH_TOKEN、已有的 gh auth 会话或 Git 凭据进行认证。远程扫描
目前仅支持 GitHub.com;不支持 GitHub Enterprise Server 和自定义 GitHub
API base URL。
-fix dry-run 可以预览远程修复。应用 -fix on 需要一个新的、
显式的 -remote-checkout-dir;sisakulint 绝不会直接写入 GitHub。
PR 模式下的修复仅限于 PR 中变更的工作流,以及(如果提供)
-remote-target 选定的范围。会修改仓库文件(如
.github/dependabot.yaml)的修复器在本地扫描中仍然启用,但在
此仅限工作流的响应契约下被禁用。
Homebrew(macOS / Linuxbrew) brew tap sisaku-security/homebrew-sisakulint brew install sisakulint
go install go install github.com/sisaku-security/sisakulint/cmd/sisakulint@latest 需要 Go 1.26 或更新版本。
从 releases 页面下载并放到 $PATH:
Linux 示例
curl -sSL -o sisakulint https://github.com/sisaku-security/sisakulint/releases/latest/download/sisakulint-linux-amd64 chmod +x sisakulint sudo mv sisakulint /usr/local/bin/
从源码构建 git clone https://github.com/sisaku-security/sisakulint.git cd sisakulint go build ./cmd/sisakulint
作为 GitHub Action 将 sisakulint 接入 CI 的最简单方式是官方 sisaku-security/sisakulint-action。它会安装二进制、运行扫描、将发现渲染为 PR 内联注解,并(可选地)上传 SARIF 到 GitHub Code Scanning。 name: sisakulint on: pull_request: paths: [".github/workflows/"] push: branches: [main] paths: [".github/workflows/"] permissions: contents: read pull-requests: write # 内联 PR 注解 security-events: write # 仅当 upload-sarif: true 时需要 jobs: scan: runs-on: ubuntu-latest steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: persist-credentials: false
- uses: sisaku-security/sisakulint-action@596af4ab15e8c5b232c74aa97525a0302e7b7af4 # v1.0.0 with: fail-on: high # none | low | medium | high | critical upload-sarif: true # 将 SARIF 发送到 GitHub Code Scanning 常用输入:version、working-directory、args、config-file、autofix(off / on / dry-run)、fail-on、upload-sarif、sarif-file。完整列表见该 action 的 README。 如果你更想用 reviewdog 生成 PR 内联审查评论而不是 GitHub 注解:
- uses: reviewdog/action-setup@v1
- name: sisakulint + reviewdog
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl -sSL -o sisakulint
https://github.com/sisaku-security/sisakulint/releases/latest/download/sisakulint-linux-amd64 chmod +x sisakulint ./sisakulint -format "{{sarif .}}" \
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。