一款三百行的 GitHub Actions 安全代码检查工具:五条捕获常见漏洞披露模式规则

发布日期:2026-04-18 09:20:42   浏览量 :7
发布日期:2026-04-18 09:20:42  
7

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

一个300行的GitHub Actions安全Linter:五条捕获常见CVE模式的规则

一个专注的TypeScript命令行工具,用于发现五个 .github/workflows/*.yml
反模式,这些反模式导致了大多数现实中的Actions被入侵的情况——
仅此而已。输出SARIF 2.1.0格式以支持GitHub代码扫描。

actionlint 非常出色。如果你
需要一个全面的GitHub Actions验证器——YAML模式、表达式类型检查、嵌入式shellcheck——它无疑是正确的选择。

actionguard 占据了一个不同的领域。它刻意设计得更为“小巧”:一个
TypeScript命令行工具,仅检查五项内容,每一项都对应一种已记录的权限提升类别,并且我希望在持续集成中直接将其与
exit 1 关联起来。五条规则,约300行代码,一个运行时依赖(js-yaml)。

这五种模式:

  1. ${{ github.event.issue.title }} 直接插入到 run: shell块中——属于CodeQL研究中的“不可信输入”类别
  2. uses: actions/checkout@main ——未固定版本的引用可能被动作作者更改。浮动分支会在每次提交时自动更新。
  3. pull_request_target + 检出拉取请求头引用——属于GitHub安全实验室的“pwn请求”模式
  4. 缺少 permissions: —— GITHUB_TOKEN 默认获得广泛的权限范围。
  5. YAML中包含明文令牌材料 ——例如 gh[pousr]_..., AKIA..., -----BEGIN PRIVATE KEY-----

每一种情况都有一个特性:如果 actionguard 产生误报,“修复”仍然会使你的工作流更加安全。

GitHub: https://github.com/sen-ltd/actionguard

截图

工具的形态

# 人类可读的输出
actionguard .github/workflows

# JSON格式供脚本使用
actionguard .github/workflows --json | jq '.counts'

# SARIF 2.1.0格式供GitHub代码扫描使用
actionguard .github/workflows --sarif > actionguard.sarif

退出码:

代码 含义
0 没有问题(或仅有 note 级别的发现)。
1 至少有一个 warningerror
2 CLI使用错误或YAML解析失败。

将其接入CI:

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部