← 最新论文
🤖 machine learning

A Comprehensive Evaluation of Code Language Models for Security Patch Detection

本文通过一个包含 20 个数据集和 270 个模型的统一框架,对用于漏洞修复提交检测的代码语言模型进行了严谨的重新评估,揭示了当前模型存在数据泄露和标签错误的问题,并最终表明在严格的误报约束下,这些模型无法可靠地识别安全修复。

原作者: Nils Loose, Joseph Bienhüls, Kristoffer Hempel, Felix Mächtle, Thomas Eisenbarth

发布于 2026-08-06
📖 1 分钟阅读☕ 轻松阅读

原作者: Nils Loose, Joseph Bienhüls, Kristoffer Hempel, Felix Mächtle, Thomas Eisenbarth

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,互联网是一座完全由代码构建的、规模宏大且繁忙的城市。每天都有新的建筑拔地而起,旧的建筑被翻修,有时,地基中会出现隐藏的裂缝,可能让窃贼潜入。在这座城市中,“安全补丁”就是修复这些裂缝的紧急维修,旨在坏人发现它们之前将其修补好。长期以来,人们一直试图建造一个超级智能的机器人侦探,能够扫描每天数百万次的这些建设更新(被称为“提交”/commits),并瞬间大喊:“嘿,这个是安全修复!”人们希望这个机器人能比官方警察公告板(漏洞数据库)记录下这些信息的速度更快地发现修复程序,从而实时保障城市的安宁。但为了训练这个机器人,科学家们需要一个巨大的示例库,准确地展示哪些更新是修复程序,而哪些仅仅是普通的变更。问题在于,这个库资料散落在几十个不同的书架上,用不同的语言编写,并由不同的人使用不同的规则进行标注,这使得对比结果变成了一场噩梦。

这篇论文就像是一群决定清理那个混乱图书馆、建立一个单一且巨大的统一文件柜,然后让机器人侦探接受最严苛测试的侦探团队。他们收集了来自 20 个不同数据集的超过 18 万次代码更新,并训练了 270 个不同版本的机器人,其规模从小巧敏捷的模型到拥有 800 亿参数的庞大、聪慧的模型不等。他们想看看这些机器人是否真的能“理解”代码以寻找安全修复,还是仅仅依赖于提交信息(程序员写的注释)或通过记忆它们来自哪些项目。

结果却让人清醒。研究团队发现,这些机器人主要依赖提交信息,而不是观察实际的代码变更。当研究人员强制要求机器人只能观察代码时,它们的表现显著下降。即使是最大、最强大的机器人模型,在规则严格的情况下(即在极低的误报率 0.5% 下),也无法可靠地识别安全修复:每一个模型都至少漏掉了 80% 的实际安全修复。研究还发现,用于训练机器人的“地面真值”(ground truth)标签经常是错误的,尤其是对于那些没有关联官方 CVE(常见漏洞与披露)编号的修复。事实上,错误高度集中在这些未经验证的修复中,从而扭曲了整个评估过程,使机器人看起来比实际表现得更好。

最终,论文表明,仅仅通过扩大机器人的规模或提供更多上下文(例如添加附近文件的额外代码行)并不能解决问题。机器人之所以表现挣扎,是因为安全修复的真实证据往往存在于所修改的具体代码行之外,这需要对整个系统有更深层的理解,而目前的模型尚不具备这种能力。作者得出结论,在我们能够弄清楚如何有效地选择和使用正确的上下文,以及在修复我们训练数据的混乱标注之前,这些自动化系统还无法取代人类专家来识别安全补丁。他们建立了一个更好的测试框架,并发布了他们的工具以帮助未来的研究人员避免同样的陷阱,但目前来看,实现完全自动化的安全补丁检测这一“魔法”仍然遥不可及。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →