仓库级编程助手究竟能在多大程度上提升安全性?
它们能将传统静态分析工具的检测率大致提升一倍,但代价是误报率显著增加。2023年一项研究对比了11款静态分析器与ChatGPT在OWASP十大安全风险中92个PHP漏洞上的表现:ChatGPT发现了62%-68%的缺陷,而表现最佳的传统工具仅检测出32%[1]。即便组合使用多款传统分析器,检测率也仅达到53%——仍低于ChatGPT的表现[1]。这意味着使用AI助手的团队能在早期捕获更多漏洞,尤其是在PHP这类缺乏内置安全机制的语言中。
然而,同一研究发现ChatGPT的误报率高达91%,意味着每100条警报中仅有约9条是真实漏洞[1]。作为对比,传统工具中表现最差的误报率为82%[1]。因此,尽管AI能发现更多真实缺陷,但也会用大量虚假警报淹没开发者——若将其作为独立解决方案使用,可能会让团队不堪重负。
能否在控制误报的同时不损失检测能力?
是的——通过将AI助手与运行时验证或静态分析相结合,团队可以在保持高检测率的同时大幅减少误报。2025年的一项研究在1247个AI生成的C语言程序上测试了运行时监控系统(Copilot-RV),这些程序包含18种人为植入的漏洞[2]。该系统检测出了94.3%的注入缺陷,误报率仅为2.1%,运行时中位开销为3.7%[2]。相较于ChatGPT单独使用时高达91%的误报率[1],这无疑是巨大的改进。
运行时方法通过在代码执行过程中检查其行为是否符合正式的安全规则(例如内存安全、API使用规范),而非仅进行静态代码扫描[2]。当与静态分析结合使用时,这种混合流程相比仅依赖静态分析,将人工验证工作量减少了73%[2]。因此,证据强烈表明误报是可控的——但前提是AI必须与第二层更精确的检测机制协同工作。
有哪些注意事项——以及这些工具在什么情况下会失效?
主要问题在于,AI助手在处理复杂的、仓库级别的代码时仍存在困难。一项2025年的基准测试(A.S.E)评估了主流大语言模型在真实编程任务中的表现,发现当前模型在独立代码片段上表现良好,但在处理多文件、仓库级别的场景时,其安全性显著下降[3]。更大的推理预算(即更多计算资源)并未稳定地生成更安全的代码[3]。这意味着,尽管AI有助于局部漏洞检测,但它可能遗漏跨多个文件或函数的上下文相关缺陷。
另一个细微之处在于:并非所有误报都毫无价值。2021年的一项研究指出,许多被标记为“误报”的静态分析警告——例如整数溢出警报——实际上指向了应修复的可靠性缺陷,即便它们不会立即导致崩溃[4]。因此,团队应仔细分类AI警报,而非将其全盘视为干扰信息。关键在于:仓库级辅助工具只有在作为分层策略的一部分——将AI检测与运行时监控或静态分析相结合——并且团队针对特定代码库投入精力调整警报阈值时,才能最大程度地提升安全性。
关于这些来源
该答案基于4项研究(3篇经同行评审,1篇为预印本)——发表于2021年至2025年间,其中2篇为2024年及以后发表——这些研究是从通过质量筛选的4项研究中选出的最具相关性的成果,而它们又源自从超过5亿篇论文的数据库中检索出的52篇文献。
本文引用的文献
旧代码的新把戏:AI聊天机器人能否取代静态代码分析工具?
在一项针对92个PHP漏洞的研究中,ChatGPT检测出了62%至68%的缺陷——是传统静态分析工具最佳表现(32%)的两倍——但其误报率高达91%,而表现最差的传统工具误报率为82%[1]。
使用运行时验证保障AI生成代码的安全性
一个运行时验证系统(Copilot-RV)在1247个AI生成的C语言程序中检测出了94.3%的植入漏洞,误报率仅为2.1%,运行时开销为3.7%;将其与静态分析相结合,可将人工验证工作量减少73%[2]。
A.S.E:用于评估AI生成代码安全性的仓库级基准测试
一项仓库级基准测试(A.S.E)发现,当前的大语言模型在多文件场景下难以实现安全编码,且增加推理预算并不能可靠地提升安全性[3]。
假阳性真的就是假阳性吗?
本文指出,许多被标记为“误报”(如整数溢出)的静态分析警告,实际上是为了可靠性和安全性而应修复的真实缺陷[4]。
