你以为在公开仓库提个 issue 只能算噪音?今天它已经能跑通你的 CI 凭证了——这件事把 GitHub Actions 的信任模型彻底变了

你以为在公开仓库提个 issue 只能算「噪音」?今天它已经能跑通你的 CI 凭证了——这件事把 GitHub Actions 的信任模型彻底变了。

事情是这样的。

2026 年 7 月 28 日,GitHub 官方公布了一个很多人没注意到的安全机制更新:GitHub Actions 现在会自动拦截可疑工作流,在特定条件下要求人工审批后才能执行。这不是功能更新,是信任模型的转变。

攻击链长什么样

整个过程不需要攻击者有任何仓库权限。他只需要注册一个 GitHub 账号,在你的公开仓库里提一个 issue——标题里藏着一段恶意指令,body 里附一个链接指向他自己准备的脚本。你的 CI 触发条件刚好是 issue_comment 或者用了某个 AI coding agent 分析这个 issue……接下来发生的事情不需要猜:攻击者已经能在你的 runner 上执行任意代码了,你的 GITHUB_TOKEN、云厂商凭据、所有环境变量,全在他手里。

这不是理论。安全公司 Novee 在 Black Hat USA 2026(8 月 5 日)上演示了这套攻击链,用的是 Claude Code 和 Gemini CLI 的真实漏洞(CVE-2026-54316、CVSS 9.1;CVE-2026-12537、CVSS 10.0)。三个厂商自己的 CI 都被攻破了。

GitHub 这次做了什么

7 月 28 日更新的核心就一句话:GitHub Actions 自动识别可疑工作流,并在执行前强制等待人工审批

具体逻辑:

  • 系统会对工作流做实时风险评估,触发点包括:来自非协作者的事件、涉及敏感权限的操作、调用了未加锁版本的第三方 action
  • 被判定为「可疑」的工作流不会立刻执行,而是进入 held 状态,停在等待界面
  • 只有拥有仓库写权限的协作者通过 Web 会话审批后,工作流才会继续
  • 这个保护是自动开启的,仓库管理员不需要配置任何东西

目前只针对 github.com 上的公开仓库,企业版(GHES)暂时没有。

但审批通过不代表安全了

这里有个关键点很多人忽略了:审批只是增加了攻击的时间成本,但如果你给 CI 的权限本身就是过度的——runner 拿着对生产环境有写权限的 token、挂着能访问所有 Secrets 的环境变量——审批通过之后攻击者还是一路畅通。

所以这次更新本质上是最后一道闸,不是根本解法。

你的下一步

第一,立刻检查你的 CI 工作流权限配置。给 GITHUB_TOKEN 最小权限,给 Secrets 按环境隔离,别让一个 runner 既能读代码又能写生产。

第二,锁定所有外部引用的 action 版本。把 uses: actions/checkout@v4 后面那个 @v4 改成具体 commit SHA。任何 tag 都可以被重定位,这是过去几年供应链攻击最常见的入口。

第三,审查你的 AI coding agent 在 CI 中的使用方式。如果你的 pipeline 会自动分析 issue 内容再决定是否执行某个步骤,这条链路就是攻击面。

GitHub 说他们还在推进 egress firewall、dependency locking、scoped secrets 这三件事——那个才是从架构层面改变 runner 信任模型的东西。但在那之前,先把手上能做的做了。


标签:GitHub Actions / CI/CD安全 / 供应链安全 / 凭证保护

评论区

0 条评论

登录后可评论。