An Empirical Study of Automated Vulnerability Localization with Large Language Models

2024年03月30日
  • 简介
    最近,自动漏洞定位(AVL)引起了广泛关注,旨在通过确定导致发现漏洞的代码行来促进诊断。大型语言模型(LLMs)在各个领域展现了潜力,但它们在漏洞定位方面的有效性仍未得到充分探索。在这项工作中,我们进行了首次全面研究LLMs在AVL中的应用。我们的研究涵盖了10多个适用于代码分析的领先LLMs,包括ChatGPT和各种开源模型,涵盖了三种架构类型:仅编码器、编码器-解码器和仅解码器,模型大小从60M到16B参数不等。我们使用4种不同的范式探索了这些LLMs的效果:零样本学习、一次样本学习、判别微调和生成微调。我们的评估框架应用于基于C/C++的BigVul数据集和另一个包含智能合约漏洞的数据集。结果表明,LLMs的判别微调可以显著优于现有的基于学习的AVL方法,而其他范式对任务的效果较差或出乎意料地无效。我们还确定了输入长度和编码器和解码器微调过程中单向上下文方面的挑战。然后,我们介绍了两种补救策略:滑动窗口和右向前嵌入,两者都显著提高了性能。此外,我们的发现突显了LLMs在通用弱点枚举(CWEs)和不同项目之间的某些泛化能力,表明在漏洞定位方面它们有着很大的实际应用前景。
  • 图表
  • 解决问题
    本论文旨在探索大型语言模型在自动漏洞定位中的应用效果,并比较不同的学习范式和模型架构对于漏洞定位的影响。
  • 关键思路
    论文通过对10多个大型语言模型在4种不同的学习范式下的表现进行比较,发现判别式微调可以显著提高模型在漏洞定位上的性能。
  • 其它亮点
    本文使用了多个数据集进行实验,并提出了两种解决输入长度和单向上下文的问题的策略。研究还发现大型语言模型在不同的漏洞类型和项目之间具有一定的泛化能力。
  • 相关研究
    在相关研究方面,最近也有一些工作探索了大型语言模型在程序分析中的应用,例如《CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing》和《GraphCodeBERT: Pre-Trained Neural Code Generation for Graphs》等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论