去年有个数据挺有意思:GitHub Copilot用户写的代码,被合并进主分支前的平均审查时间从4.2小时缩到了47分钟。速度是快了,但有个问题没人敢细想——那些AI没看出来的东西,最后谁买单?
一位叫Anton P.的工程师最近做了个实验,把同一个支付服务的漏洞扔给4家主流AI代码审查工具。结果?全军覆没。这个漏洞能让攻击者用1美元买到100美元的东西,而AI们连眼皮都没眨。
实验设计:一个精心埋雷的支付接口
Anton在代码里藏了个经典的竞态条件(Race Condition,多线程执行时因时序问题导致的数据错乱)。场景很真实:用户同时发起两笔支付请求,系统在处理第一笔时还没扣款,第二笔请求已经读取了同样的账户余额。
漏洞的精妙之处在于它完全符合"正常代码"的所有表面特征。没有明显的语法错误,没有硬编码的密钥,没有SQL注入的经典模式。它就是个时序问题,藏在两个看似无关的数据库操作之间。
4个参赛选手分别是:GitHub Copilot Code Review、Amazon CodeGuru、DeepCode(Snyk旗下)、以及一个基于GPT-4的自定义审查Agent。Anton给它们的提示词很标准,就是日常开发中会用的那种——"请审查这段代码,找出潜在的安全问题"。
结果统计出来有点尴尬。Copilot指出了3个"建议优化项",全是代码风格问题;CodeGuru抓到一个无关紧要的日志格式问题;DeepCode倒是标记了"潜在并发问题",但定位完全错误,指到了一段无辜的缓存代码上;自定义GPT-4 Agent最话痨,输出了800多字的分析,结论却是"未发现严重安全漏洞"。
为什么AI对这个漏洞集体失明
竞态条件这东西,对人类审查者来说也是个老难题。但它对AI尤其不友好,核心原因在于训练数据的结构性偏差。
公开代码库里,竞态条件的样本本身就少——因为这种漏洞通常在生产环境暴露,很少会以"带注释的漏洞示例"形式出现在GitHub上。AI学到的更多是"什么样的代码看起来危险",而非"什么样的执行路径可能出问题"。
Anton在实验笔记里写了个很扎心的观察:所有4个工具都把注意力放在了"代码长什么样",而不是"代码会怎么跑"。它们解析的是静态文本,而非可能的执行时序。竞态条件的恶意载荷需要构造特定的并发请求序列,这在静态分析层面几乎不可见。
更麻烦的是,支付系统的业务逻辑往往故意设计得复杂。优惠叠加、部分退款、预授权冻结……这些合法功能的存在,让"异常资金流动"的边界变得模糊。AI缺乏对业务规则的深度理解,自然分不清"这是正常促销逻辑"还是"这是漏洞利用路径"。
人类审查者做对了什么
作为对照,Anton把同一段代码给了3位有支付系统经验的高级工程师。2人在15分钟内定位到了问题,第3位花了40分钟,但在追问下也找到了正确路径。
他们的方法很"不AI":先画时序图,模拟两个请求并行执行时的数据库状态变化;然后问"如果这里网络延迟了会怎样";最后验证最坏情况下的资金缺口。整个过程依赖的是对分布式系统故障模式的直觉,以及对支付业务"不能多扣、不能少扣、不能重复扣"的铁律的敬畏。
有个细节很有意思。其中一位工程师后来承认,他之所以能快速发现,是因为三年前在一个类似场景里踩过坑——当时公司损失了6位数才补上这个洞。这种带着伤疤的经验,正是当前AI训练数据里最稀缺的类型。
工具厂商的回应与现实的落差
实验发布后,Anton收到了两家厂商的私信。一家的产品经理表示"正在研究动态分析集成",另一家则强调"用户应该结合人工审查使用"。
这些回应本身没问题,但暴露了一个行业默契:AI代码审查的营销话术和实际能力之间存在一条灰色地带。厂商喜欢展示"检出率提升X%"的数据,却很少公开"漏检率"和"漏检的严重程度分布"。
Anton在结论部分写得很克制:"我不会因此停用AI审查工具。它们对SQL注入、硬编码密钥这类模式化漏洞的检出确实高效。但我会把它们的输出降级为'第一道筛子',而不是'最终裁决'。"
这个实验最讽刺的后续是:Anton把实验代码本身提交给了其中一个AI工具,问它"这段代码有什么问题"。AI分析了半天,给出的建议是"函数命名可以更语义化"。
那个1美元买100美元的漏洞,至今还在代码里躺着——当然,是在一个隔离的测试环境里。但生产环境中还有多少类似的"睡眠漏洞",正在等待某个足够耐心的攻击者来唤醒?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.