《计算机技术与发展杂志》发表论文赏析
作者:陈霄萍;李涛;李琳;郭佳雄;伍章驰;代雪晴;李家攀;覃阳青;何柳
单位:1. 武汉科技大学 计算机科学与技术学院,湖北 武汉 430065;2. 智能信息处理与实时工业系统湖北省重点实验室,湖北 武汉 430065;3. 国投证券股份有限公司,广东 深圳 518000;4. 武汉智园智慧电梯科技有限公司,湖北 武汉 430065
摘要:随着软件的多样性和复杂性的不断增加,软件漏洞的数量也呈现出爆炸式的增长,同时,软件漏洞的修复也变得越来越困难。 漏洞自动修复方法近来得到了研究者的广泛关注,而大型语言模型(Large Language Model,LLM)的出现为漏洞自动修复开辟了新的道路。 目前的代码漏洞修复 LLM 的研究仅仅将漏洞修复归类为通用的文本生成任务,得到修复程序,并定义漏洞自动修复工具生成的修复程序当且仅当其和标准答案完全一致的情况下为有效修复程序。 然而,同一个漏洞程序可能对应着多个不同的修复程序,当前判定方法过于苛刻,且代码生成任务不同于一般的文本生成任务,在生成代码时不仅要考虑代码的功能正确性,还需要考虑代码的安全性。 由于 LLM 在预训练过程中使用的代码语料没有安全标签,在生成修复程序时是使用 Top-K 排序算法基于概率来进行生成,也没有考虑代码的安全性因素,所以,即使生成的修复程序修复了当前漏洞,也有可能会引入新的漏洞。 针对这些问题,该文提出了一种基于大模型的软件漏洞自动修复方法,包括提示工程、模型微调技术和关注生成代码安全性的重排序算法 SecRerank,从模型的输入、模型本身以及模型的输出等三个阶段来提升模型的漏洞修复性能。 实验结果表明,该方法的漏洞修复效果优于基线方法。
关键词:软件漏洞;漏洞自动修复;大型语言模型;提示工程;微调