AI写的修复代码反成突破口:Wiz红队自主攻入Snowflake内部Jira,Copilot Autofix背锅

· 科技资讯

一觉醒来,AI 自己攻击了 AI 写的代码

8 月 17 日,云安全公司 Wiz 公布了一项细思极恐的研究:他们的自主 AI 红队工具 “Red Agent” 在没有人工干预的情况下,发现并利用了一个由 GitHub Copilot Autofix 生成的漏洞,成功攻进了 Snowflake 的内部 Jira,还读取了敏感数据。 整个过程——发现、利用、验证、评估影响范围——全部由 AI 独立完成。

翻译成人话:AI 写代码时埋下的雷,被另一个 AI 自己踩响了。 这不再是”AI 会不会取代程序员”的争论,而是”AI 写的代码正在被 AI 攻击,人类程序员可能连中间过程都来不及看”。

漏洞是怎么被 AI 埋进去的

事情要从 Snowflake 的一个公开仓库 snowflake-connector-net 说起。这个仓库里有一个 GitHub Actions 工作流 jira_issue.yml,用来在有人开 issue 时自动把内容同步到内部 Jira。

6 月 18 日,一个标注着 “Copilot Autofix powered by AI” 的提交(PR #1218)合入了仓库。这个”AI 自动修复”把原本安全的写法改成了有问题的写法:

# 原来的安全写法:用环境变量 + jq 构造 JSON
env:
  ISSUE_TITLE: ${{ github.event.issue.title }}
- run: jq -n --arg title "$ISSUE_TITLE" ...

# AI "修复"后的写法:直接把用户输入拼进 shell
- run: TITLE=$(echo '${{ github.event.issue.title }}' | sed ...)

问题出在最后一行:github.event.issue.title任何陌生人都能控制的输入(随便开一个 issue 就能触发),而它被直接拼进了 shell 单引号里。只要标题里带一个单引号,就能逃逸出 echo '...',执行任意命令——标准的脚本注入漏洞。

更讽刺的是,这个工作流还有一个看似防护的 if 条件:

if: (github.event_name == 'issues' && github.event.pull_request.user.login != 'whitesource-for-github-com[bot]')

issues 事件里,github.event.pull_requestnull,所以这个条件永远为真——所有用户都能触发攻击。安全门形同虚设。

AI 红队是怎么”自主作案”的

Wiz 的 Red Agent 扫描了 Snowflake 的 GitHub 组织,发现这个工作流存在脚本注入风险,然后:

1. 用精心构造的 issue 标题触发工作流
2. 在 GitHub Actions 运行器上执行任意命令
3. 拿到运行器上的凭据,进入 Snowflake 内部 Jira
4. 读取敏感数据、评估影响范围
5. 全程零人工干预

Wiz 在 6 月 23 日负责任披露,Snowflake 当天完成修复、轮换了受影响凭据。审计日志确认漏洞窗口期内只有 Wiz 一方访问过数据。

对开发者意味着什么

第一,别盲信 AI 的”自动修复”。 Copilot Autofix 的出发点是好的——它看到代码里有可疑模式,想帮你”修好”,结果把安全写法换成了不安全的写法。AI 修 bug 时不会像人一样考虑”这个输入是不是不可信”,它只追求”让当前告警消失”。

第二,CI/CD 是攻击面重灾区。 这次漏洞在 GitHub Actions 里,本质是”不可信输入进了 shell”。类似的坑还有:把 PR 标题、issue 标题、分支名直接拼进 run: 脚本。凡是把外部输入拼进 shell 的地方,都要默认当注入处理。

第三,AI 攻防已经进入全自动时代。 Red Agent 这类工具会越来越多,攻击成本在直线下降。你仓库里的每一个 workflow、每一个公开脚本,都可能被 AI 红队盯上。

三条立即可做的自查清单

1. 搜你的 workflowgrep -rn 'github.event' .github/workflows/,找到所有把外部输入拼进 run: 的地方,改用 env: 传参 + jq/JSON 构造,不要直接字符串拼接

2. 检查 if: 条件github.event.pull_requestissues/issue_comment 事件里是 null,用这类条件做鉴权等于没有鉴权

3. 给 Actions 权限瘦身:默认 permissions: read-all,按需声明写权限;敏感仓库开启”仅允许维护者触发工作流”

一句话结论:AI 写代码的速度越快,代码审查和安全护栏就越重要——因为你根本不知道哪一行”自动修复”正在给你的生产环境开门。


🔥 关注LC智趣厅,每天第一时间看懂 AI 行业大事。

👇 觉得有用,点个赞让更多人看到。


— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn

Scroll to Top
微信公众号:LC智趣厅

扫码关注微信公众号
LC智趣厅