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)。
这五种模式:
-
${{ github.event.issue.title }}直接插入到run:shell块中——属于CodeQL研究中的“不可信输入”类别。 -
uses: actions/checkout@main——未固定版本的引用可能被动作作者更改。浮动分支会在每次提交时自动更新。 -
pull_request_target+ 检出拉取请求头引用——属于GitHub安全实验室的“pwn请求”模式。 -
缺少
permissions:块 ——GITHUB_TOKEN默认获得广泛的权限范围。 -
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 |
至少有一个 warning 或 error。 |
2 |
CLI使用错误或YAML解析失败。 |
将其接入CI:
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。
