论文

基于 LLM 的代码漏洞修复中的指标失败:实证研究和变更感知屏幕

Metrics Failure in LLM-Based Code Vulnerability Repair: An Empirical Study and a Change-Aware Screen

模型评测评测方法与指标

摘要

大型语言模型 (LLM) 越来越多地应用于 C/C++ 安全漏洞的自动修复,而编译率是通常报告的进度指标:生成的补丁是否可以编译。我们认为,对于单功能漏洞修复来说,编译率在科学上是不可靠的指标,并且我们通过来自 Big-Vul 的 203 个易受攻击函数的 5 个受控实验、三个开源代码 LLM(350M 到 6.7B 参数)和三种提示策略来支持这一点。编译率 (i) 几乎不响应大幅改进生成代码的干预; (ii) 主要是评估工具和数据集工件而不是模型质量,大约 64% 的编译失败与模型无关,这一比例在不同模型中几乎没有变化; (iii) 在单个编译器标准标志下的相同补丁上移动 1.8 至 2.7 倍,且回归为零; (iv) 以与参考相似性度量相反的顺序对三个模型进行排名; (v) 当用作优化目标时奖励非修复,因为编译器反馈循环提高了编译率,而与人工修复的相似性下降,手动检查在新编译的输出中发现删除和占位符式的非修复。自然的后备方案、全功能 CodeBLEU 也失败了:易受攻击的输入的未更改副本胜过每个模型。我们还检查 diff_F1,一个变化感知屏幕,仅对编辑区域进行评分。它对我们观察到的基于删除的游戏补丁的无操作给予精确的零信用,对一些(尽管不是全部)基于删除的游戏补丁给予接近零的信用,同时仍然给予真正的部分编辑,因此它可以在更深入的、基于执行的分析之前充当廉价的屏幕。它不是维修质量指标,我们会报告它的不足之处。我们的研究结果支持对基于 LLM 的漏洞修复进行变化感知、基于执行的评估。