返回资讯中心
外部精选
软件工程
#开发者实时流

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 集成中的提示注入等风险。

Hacker News 最新ankitg122026/11/2 · 昨天30 分钟阅读

以下正文由 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 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →