支持 AI 的 GitHub Actions 仅需通过一条评论就可能被劫持,从而导致 API 密钥、云令牌和其他机密信息泄露。一名安全研究员发现了 22 个开源仓库存在此类问题:公开的触发器、带有 “skip prompts” 标志运行的 AI 工具以及暴露的机密信息,共同构成了一条直接的数据外泄路径。

漏洞原理

现在的项目直接在 CI 流水线中嵌入了 AI 智能体——例如 Claude Code、GitHub Copilot CLI 及类似工具。工作流步骤会运行一个 Shell 命令,并且通常会添加一个标志,指示工具忽略交互式权限请求。当工作流因任何公开输入(如 Issue、评论或 Pull Request 标题)而启动时,攻击者只需发布一行文本,AI 就会将其视为命令。

由于 “skip prompts” 标志的存在,AI 已经获得了无限制的 Shell 访问权限,它可以读取工作流暴露的任何环境变量或文件。如果该任务还加载了机密信息(如 API 密钥、云服务令牌或完整服务账号凭据),AI 就会将这些值通过管道传输到攻击者控制的服务器。无需更改代码,无需添加新依赖,只需一条看起来无害的评论即可完成攻击。

现实案例

研究人员确认了三个已被修复的漏洞仓库:

  • pymc-labs/pymc-marketing – 可以通过提示词注入利用公开的 Issue 来获取 Anthropic API 密钥。
  • MadAppGang/dingo – 该工作流赋予了 Claude Code 完整的 Bash 访问权限,并在同一个任务中暴露了两个机密信息。
  • MadAppGang/claudish – 复用了与 dingo 项目相同的漏洞模板。

其中一项发现涉及一个活跃的云服务账号密钥,研究人员已直接向一家主要 AI 提供商的安全团队报告了此情况。另有 12 份报告正等待维护者处理;在修复程序上线前,这些维护者的姓名将予以保密。

潜在风险

一旦攻击者提取了机密信息,造成的损害可能是即时且代价高昂的。云服务账号密钥可以授予对计算资源、存储桶和其他付费服务的无限制访问权限。大语言模型提供商的 API 密钥可以进行无限次查询,可能产生数千美元的费用。由于漏洞利用是在 CI 环境内部运行的,攻击可能会向下游扩散:在受损运行器上构建的任何制品都可能携带恶意代码,从而使单个仓库变成供应链攻击的向量。

对于依赖 AI 辅助 CI 的团队来说,这种权衡非常严峻。自动生成代码、代码检查(linting)或文档编写带来的便利,必须与“公开评论可能变成隐蔽后门”的风险进行权衡。

为什么漏洞容易被忽视

研究人员最初提交了六份报告,但随后又撤回了。撤回的原因是对 GitHub Actions 权限检查的假设,而非对 Action 源代码的逐行审查。文档和直觉可能会产生误导;确认 AI 启用步骤安全态势的唯一可靠方法,是检查运行该工具的代码以及将工具连接起来的工作流 YAML 文件。

缓解措施清单

如果您在 GitHub Actions 工作流中运行 AI CLI 或类似工具,请在合并前回答以下两个问题:

  1. 谁可以触发工作流? 将触发器限制在受信任的事件(例如向受保护分支推送代码),或者要求对外部贡献者启动的运行进行显式批准。避免在没有额外门控机制的情况下使用 on: issue_commenton: issues

  2. 同一个任务中加载了哪些机密信息? 切勿在运行具有无限制 Shell 访问权限的 AI 智能体的任务中暴露 API 密钥、云令牌或服务账号凭据。将包含大量机密的步骤分离到独立的任务或不调用 AI 工具的运行器中。

额外的加固步骤:

  • 移除跳过权限提示的标志,强制 AI 工具在执行 Shell 命令前请求显式确认。
  • 添加一个步骤,对 AI 工具可能读取的任何环境变量进行清理或脱敏。
  • 使用具有网络出站控制的自托管运行器,以阻止向任意端点的数据外泄。

反方观点:AI 在 CI 中的效用

支持者认为,生产力的提升超过了风险。自动化的代码建议缩短了审查时间,而 AI 驱动的测试可以更早地发现 Bug。然而,同样的便利也扩大了攻击面。关键不在于放弃 AI,而是要将任何具有 Shell 级权限的工具视为潜在的攻击向量。

下一步关注点

这些发现已经在 GitHub 的安全论坛上引发了关于收紧 AI 启用型 Actions 默认权限的讨论。未来的平台更新可能包括:

  • 一个强制 AI 工具在没有直接 shell 访问权限的沙箱环境中运行的标志。
  • 对 issue 正文或评论中提示词注入(prompt-injection)模式的内置检测。
  • 当工作流将公共触发器与包含 secrets 的任务混合使用时,发出自动警报。

目前,责任仍在于仓库维护者。已识别出的 22 个仓库表明,这并非孤立问题;任何采用相同工作流模式的项目都存在漏洞。在攻击者发现问题之前,对 CI 配置进行快速审计即可揭示该问题。

核心结论: GitHub 公开 issue 中的单行文本就可能让 AI agent 完全控制您的 CI 环境,并窃取您存储在其中的 secrets。请核实谁可以启动您的工作流,确保 secrets 远离 AI 驱动的步骤,并仔细审查每一个授予未经检查权限的标志。安全漏洞带来的代价远超进行规范审查所付出的努力。