AI补丁只有26%成功率,怎么用才不上当
周末折腾了一下AI自动补漏洞,踩了不少坑。
起因是看到1Password实验室发的研究报告,测了两个前沿AI模型,生成6080个安全补丁,只有26%完全正确。这个数字看着吓人,但仔细想想,跟我在被投团队里看到的情况差不多。AI写代码像刚毕业的实习生,思路对,细节全错。
这周我把这套流程完整跑了一遍,从零开始,手把手说下怎么用AI帮你补漏洞,同时不被它坑。
第一天,先搞清楚AI补洞到底是怎么回事。
漏洞可以理解成房子墙上的裂缝,黑客能顺着爬进来。补洞就是把裂缝填上。AI补洞就是让大模型看懂代码,自己生成修复方案。听起来很省事,但实际跑起来,你会发现AI经常把墙拆了重砌,看着是补好了,承重结构变了,楼反而更危险。
我用的工具链很简单,一个开源漏洞扫描器,一个AI代码助手,加上Git仓库。扫描器找出问题,AI生成补丁,人工审核后合入。第一天我只做一件事,跑通流程。
具体步骤是这样。先装漏洞扫描器,我用的是开源社区的免费方案,装完跑一遍 scan 命令,它会输出一个漏洞清单,每一条带风险等级和文件位置。然后挑一个低风险的练手,把这段代码复制给AI,让它生成修复建议。AI会给出一个diff格式的补丁,就是标明哪行删了、哪行加了。
看到补丁别急着合入,先看它改了什么。我这边测下来,AI最容易犯的错是自作主张。它觉得原来的逻辑不对,顺手就把判断条件改了,比如把允许列表改成拒绝列表。研究数据里,20.1%的补丁就是这种,修好了漏洞,但程序行为变了,用户本来能用的功能没了。
第三天,处理复杂情况。
第一天跑通流程后,我试着让它补一个中等风险的问题。这个漏洞涉及跨文件的数据流,AI只看了当前文件,没看全局。结果补丁只堵住了表面入口,真正的数据源还在裸奔。我拿去给团队里做安全的老同事看,他说,这就像你家后门锁了,前门还开着,AI以为补完了。
这里有个关键操作,给AI喂上下文。别只贴漏洞代码,把相关的调用链、数据流向、甚至注释都带上。我试过,带上完整上下文后,补丁质量明显提升,从一眼假变成需要仔细看才能发现问题。但别指望它一次就对,多轮对话,让它解释为什么这么改,能逼出不少隐藏问题。
还有个坑,AI补丁会引入新问题。研究数据里,2.3%的补丁修好了原漏洞,但引入了新漏洞。这个比例看着不高,但在大规模代码库里,每100个补丁就有2个新坑,积少成多,比原来的问题还麻烦。
一周后,我建了个相对靠谱的流程。
AI生成的补丁,我分三类处理。第一类,工具类、文档类、配置类,风险低,人工快速过一遍就能合入。第二类,业务逻辑相关的,必须拉着熟悉这块代码的人一起审。第三类,涉及权限、认证、支付的,AI建议仅供参考,全程人工改。
现在的核心原则是,AI补洞像给实习生派活,活可以派,但必须有人盯着。我们统计下来,AI能处理的大概是机械性、重复性的修复,比如版本升级、依赖更新、格式修正。真正需要理解业务意图的,还得人来。
对了,补丁合入前一定要跑回归测试。研究里微软在改Windows补丁指南,就是因为AI生成的补丁,在微软这么严格的环境里,也经常改出行为偏差。我们的做法是,AI补丁合入后,跑一遍完整的自动化测试,不通过就回滚,别想着现场修。
学完这套,下一步可以试的是,把AI补洞接入到CI/CD流水线里,每次代码提交自动扫描、自动生成补丁、自动跑测试,但保留人工审批环节。AI能帮你把筛选和初修的工作量减掉一半以上,但别把最后一道闸门也交给它。
本文编译自 Hacker News,原文:AI struggles to patch vulns without adult supervision
版权归原作者所有,本文为基于公开报道的编译与独立分析。
物界前沿