桃子桃子快讯
返回首页
研究论文

Copilot Autofix 引入漏洞,AI 代理数天内攻破 Snowflake Jira

Wiz 研究的 AI「Red Agent」发现 Snowflake 公开仓库因 Copilot Autofix 自动提交…

2026.08.17 · 周一4 分钟阅读

云安全公司 Wiz Research 披露,其自主运行的 AI 安全研究工具「Red Agent」在 Snowflake 的一个公开 GitHub 仓库中发现了一处脚本注入漏洞。该漏洞由 GitHub Copilot 的「Autofix」AI 自动修复功能在 2026 年 6 月 18 日的一次提交中意外引入,仅存在五天便被发现和验证。事件凸显了 AI 编程助手可能在不经意间引入高危代码模式,而 AI 代理又能在极短时间内自主挖掘并利用这些缺陷。

漏洞从何而来

Wiz 的 CI/CD 扫描能力在 Snowflake 的 snowflakedb/snowflake-connector-net 仓库中识别出 jira_issue.yml 工作流存在命令注入风险:该工作流在 issues: opened 时触发,并将 GitHub Issue 标题直接通过 ${{ github.event.issue.title }} 插入 shell 脚本。攻击者只需打开一个标题经过精心构造的 Issue,即可让 GitHub Actions Runner 执行任意命令。

更具警示意义的是,这一不安全的写法并非历史遗留。提交 4a1b8ce(PR #1218,标题「SNOW-2069227: Update jira workflows」)由 Copilot Autofix 共同署名(co-authored),自动修改将仓库原本通过 env: 变量与 jq 安全解析 JSON 的模式替换为直接的字符串插值,等同于 AI「自动修复」亲手植入了注入向量。

「安全门」形同虚设

工作流中存在一条 if: 条件,意图将触发者限定为特定机器人账户。然而在 issues 事件下,github.event.pull_request 恒为 null,条件被化简为 (null != 'whitesource-for-github-com[bot]'),对任意 GitHub 用户而言结果恒为真,等于没有拦截。

AI 代理自主完成利用

Wiz 的 Red Agent 在构造利用载荷时,先用 # 注释尝试外发凭据,但因 # 同时吞掉了 TITLE=$(...) 的右括号而触发 bash 语法错误。Red Agent 并未停止,而是自主分析错误原因,将载荷调整为 ; echo ' 正确闭合 shell 语法,成功收到来自 Azure IP 20.106.182.197 的回连回调,内容为 base64 编码的 Jira 凭据。该令牌以 qa@snowflake.net 身份登录 Snowflake 的 Jira 实例,可读取其工程、安全合规与漏洞赏金跟踪项目。

处置与时间线

  • 2026-06-18:Copilot Autofix 提交引入漏洞的 PR。
  • 2026-06-23:Wiz 完成负责任披露;Snowflake 同日修复工作流(1dc7766,PR #1402),恢复 env: + jq --arg 的安全解析模式,并轮换受影响凭据。
  • 审计日志核实:暴露窗口内仅有 Wiz 的测试 IP 访问过相关端点,PoC 阶段访问的数据已被安全删除。

给 AI 编程与安全团队的启示

  • AI 自动生成的代码必须与人工代码一样接受静态分析与安全审查,不能因其「自动」就默认安全。
  • 自动发现窗口正在急剧缩短——本案从引入到被利用验证仅五天,运维侧需要更短的补丁周期与短生命周期凭据。
  • 团队应设置防护栏,阻止 AI 代理将结构化数据解析器替换为直接的字符串插值,避免回退已被显式修复的不安全模式。

本案是首个被完整记录、由 AI 编程助手引入又被另一个 AI 代理自主攻破的生产级漏洞案例,为 AI 辅助开发的供应链安全敲响了具体而清晰的警钟。

信源