Agent Skills
返回列表
🔒

GitHub Actions 工作流安全审计

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/audit-github-actions-workflows-for-insecure-permissions-and-unpinned-actions

技能介绍

要解决的具体问题

GitHub Actions 让 CI/CD 流水线搭建变得简单,但也让 workflow 文件成了攻击者的目标。两个常见的「隐形漏洞」尤其危险:一是过度授权的权限范围——比如给 job 配置 permissions: write-all 或 contents: write,一旦触发 workflow 的环境被污染(比如 PR 事件里混入恶意提交),攻击者就能篡改仓库内容或窃取 secrets;二是未固定的 Action——用 actions/checkout@v4 或 some/action@main 这种 tag/分支引用时,上游一旦推送恶意更新,你的流水线会直接执行未知代码,这就是典型的供应链攻击(比如 2024 年多起针对开源 Actions 的投毒事件)。很多团队直到被入侵才发现,这些「方便」的写法其实是在给攻击者开后门。

技能如何工作

这个技能基于静态分析工具 zizmor 构建,把「手动检查 Actions 安全」的流程自动化。它支持两种扫描场景:

  • 本地仓库:直接指向本地 .github/workflows 目录,适合提交前本地检查;
  • 远程仓库:通过 GitHub Token 访问公开/私有仓库,适合在 PR 或 CI 阶段做强制审计。

检测规则覆盖两类核心问题:

  1. 不安全的权限范围:标记过度授权的 permissions 块(比如不需要写权限却开了 contents: write,或显式声明 write-all);
  2. 未固定的 Action 版本:识别所有用 tag/分支引用的 Action(如 actions/checkout@v4),推荐用 commit SHA(如 actions/checkout@a81bbbf8298c0fa03ea29cdc473d45769f953675)替代——SHA 是不可变的,上游无法篡改。

技能还会捕捉不安全的工作流模式,比如用 pull_request_target 触发却处理来自 PR 的输入(容易让攻击者拿到写权限),或在未信任上下文中使用 secrets。扫描结果支持三种输出:

  • 纯文本:适合终端快速查看;
  • GitHub 原生 Findings:直接关联仓库 Security 面板,方便跟踪修复;
  • SARIF:可接入 GitHub Advanced Security 或其他 SAST 工具,做后续自动化处理。

适用边界与注意点

  • 扫描远程/私有仓库需要 GitHub Token(只读权限即可),确保令牌未过期且权限最小化;
  • zizmor 是静态分析工具,无法覆盖运行时风险(比如 Action 本身逻辑有问题但语法合规);
  • 对于自定义复合 Action(比如自己写并发布到 marketplace 的),建议补充 zizmor 规则或手动审查,因为静态规则可能无法覆盖复杂上下文;
  • 修复未固定 Action 时,建议先用 actions/checkout@<sha> 替换 tag 引用,并在 PR 中验证 SHA 的合法性(比如检查对应 commit 是否属于官方仓库)。

使用场景

  • 提交代码前,检查本地 .github/workflows 文件是否存在权限过度或版本未固定的问题
  • 在 Code Review 阶段,快速识别 PR 中引入的不安全 Action 配置(如 write-all 权限或 tag 版本引用)
  • 将安全检查集成到 CI 流水线,扫描远程仓库的 workflow 文件并输出 GitHub 原生 Findings 或 SARIF 格式
  • 定期扫描团队仓库的 Actions 配置,重点检查所有 Action 是否使用 commit SHA 固定版本,防止供应链攻击

适合人员

  • 需要编写和维护 GitHub Actions workflow 的开发工程师,希望在提交前发现权限配置或版本固定问题
  • 负责 Code Review 的技术负责人或高级工程师,需要在合并前快速识别不安全的 Action 配置
  • DevSecOps 或安全工程师,需要将安全扫描工具集成到 CI/CD 流水线并输出标准化结果
  • 关注供应链安全的团队管理者或技术负责人,定期检查 GitHub Actions 的版本固定情况以降低第三方 Action 投毒风险