AI亲手写的代码,AI顺手就拆了

五天前还在跑的安全模式,今天就被同一个AI掀了桌子。

说实话,软件安全圈最近演了一出极具黑色幽默的现实剧。全球数据云巨头Snowflake的内部Jira门户,竟然被一个开源GitHub仓库里的脚本漏洞撬开。撬锁的不是黑客组织,也不是高级持续性威胁,而是Wiz Research自研的自主AI安全工具——Red Agent。

更魔幻的是,这把“钥匙”本身,就是GitHub Copilot自动生成的。

代码生成越来越快,漏洞潜伏期却越来越短。当AI开始以秒级速度写代码、修bug,传统的安全防线连抬头的功夫都没有。这次的事件,直接把行业新现实拍在桌上:关键漏洞依然能混过AI辅助的审查流程,而自主AI安全代理也能在野外瞬间完成发现与利用。

五天的漏洞窗口,够AI跑完全套

AI配图

时间线拉回6月18日。Snowflake的snowflake-connector-net仓库合并了PR #1218。提交记录里写着:Copilot Autofix powered by AI

这次提交的初衷挺常规,想把依赖老旧Atlassian插件的复杂工作流,改成直接调API的curl命令。结果AI一上手,直接把开发团队特意留下的安全屏障给拆了。

原本的代码用env:变量配合jq解析JSON,这是前人踩过坑后硬改出来的防御姿势。AI的Autofix一看,觉得不够简洁,随手替换成了直接字符串插值:${{ github.event.issue.title }}

AI配图

就这么一行改动,留下了致命的脚本注入缺口。任何GitHub用户只要新建一个Issue,就能触发这个工作流。攻击者把恶意构造的标题塞进去,单引号一旦闭合,就能跳出echo '...',在GitHub Actions运行器里自由敲命令。

有意思的是,GitHub自带的AI安全审查工具居然亮了绿灯。它扫了一遍语法,没看出问题,直接放行。

个人觉得,这点我不太认同目前的AI审查逻辑。模型只认正则匹配和词法结构,不认业务上下文。它不知道这行插值会直接喂给Shell,更不知道单引号逃逸的后果。

Autofix删掉的不是冗余,是护城河

Red Agent是怎么摸进来的?

它先对Snowflake的GitHub组织做了CI/CD扫描,一眼锁定jira_issue.yml。接着,它自己拼了一个Payload。第一次尝试时,Red Agent用了标准的注释符#来截断后续代码。

Runner直接报错:bash语法错误。因为注释符不小心把TITLE=$(...)的右括号也吃掉了。

换作普通脚本,早就抛异常退出了。但Red Agent是自主运行的。它没有停,而是自己分析了执行错误,调整了Payload,改用; echo '来正确闭合Shell块。

几秒后,外联回调成功。一个来自Azure IP 20.106.182.197的请求带着Base64编码的凭证跳了出来。

令牌一验证,身份是qa@snowflake.net。权限范围直接覆盖工程、安全合规和Bug Bounty追踪项目。Snowflake的内部看板,基本裸奔。

老实讲,这才是最细思极恐的地方。从漏洞上线到被AI完整走通利用链路,中间隔了整整五天。如果没人主动审计,这个后门可能安静地躺在那里,直到某天被真正有意图的攻击者捡到。

顺便提一句,YAML这东西本身就像个潘多拉魔盒。为了追求所谓的人类可读性,硬生生造出无数脚雷。再叠加上AI的盲目自信,不出事才怪。

当“LGTM”遇上AI生成洪流

事情到这里,技术复盘只是表层。社区大佬们的留言一针见血:“AI让引入变更的成本降到了地板价,但审查这些变更的成本根本没降。”

过去我们总骂“LGTM!”(Looks Good To Me)文化,觉得那是敷衍。现在看,那其实是人类工程师在信息过载下的无奈妥协。如今代码生成量指数级上升,人工Review的瓶颈直接被卡死。审核机制正在掉链子,而且掉得悄无声息。

AI配图

更致命的是历史语境的丢失。AI不知道env:+jq是专门用来防Shell注入的。它只看到“替换成直接插值更简洁”,于是果断按下Autofix。安全团队现在的处境很尴尬:你防住了外部渗透,却防不住内部流水线自己长出的毒瘤。

Snowflake appreciates Wiz's responsible reporting... Protecting our systems remains a top priority... We are working together with Wiz to share these learnings with the broader industry.

官方回复得很体面,当天打补丁、轮换凭证,审计日志确认只有Wiz在测试窗口访问过。风波平息得很快,快得像什么都没发生过。

但代码世界的底层规则已经改了。自动化发现把漏洞生命周期压缩到了小时级,靠人工逐行Review的时代正在加速退场。当AI既能快速造轮子,又能快速拆墙,我们的安全基座该往哪里锚定?

下一个被AI“优化”掉的,又会是什么?

【锐评】:代码生成成本归零的时代,安全审查的性价比才是生死线。别让AI的“智能”,成了流水线上的隐形刺客。

参考链接:
https://www.wiz.io/blog/red-agent-snowflake-copilot-cicd-bug