A Comprehensive Study of the Capabilities of Large Language Models for Vulnerability Detection

2024年03月25日
  • 简介
    大型语言模型(LLMs)已经展示了在代码生成和其他软件工程任务中的巨大潜力。漏洞检测对于维护软件系统的安全、完整性和可信度至关重要。精确的漏洞检测需要对代码进行推理,这使得它成为探索LLMs推理能力极限的一个好案例。尽管最近的研究应用了通用提示技术将LLMs应用于漏洞检测,但它们在这个任务中的全部能力以及在解释已识别的漏洞时所犯的错误类型仍不清楚。 在本文中,我们调查了11个LLMs,它们在代码生成方面是最先进的,通常用作编码助手,并评估了它们用于漏洞检测的能力。我们系统地搜索了最佳表现的提示,采用了上下文学习和思维链等技术,并提出了我们自己的三种提示方法。我们的结果表明,虽然我们的提示方法提高了模型的性能,但LLMs通常在漏洞检测方面遇到困难。它们报告了0.5-0.63的平衡准确率,并且在76%的情况下无法区分程序的有缺陷版本和修复版本。通过全面分析和分类287个模型推理实例,我们发现57%的LLM响应包含错误,并且模型经常预测错误的有缺陷代码位置和错误的缺陷类型。LLMs只能正确地定位DbgBench中27个漏洞中的6个,而这6个漏洞由70-100%的人类参与者正确预测。这些发现表明,尽管LLMs在其他任务中具有潜力,但它们可能无法正确理解关键的代码结构和安全相关概念。我们的数据和代码可在https://figshare.com/s/78fe02e56e09ec49300b上获取。
  • 图表
  • 解决问题
    评估当前流行的11种大型语言模型(LLMs)在漏洞检测方面的能力,探索LLMs的推理能力极限和其在识别漏洞时出现的错误类型。
  • 关键思路
    通过系统地搜索最佳的提示方法,包括上下文学习和思维链等技术,并提出了三种提示方法,来提高LLMs在漏洞检测方面的表现。研究发现,尽管这些模型在其他任务上表现出色,但在漏洞检测方面仍存在困难,且错误率较高。模型只能正确定位27个漏洞中的6个,而这6个漏洞被70-100%的人类参与者正确预测。
  • 其它亮点
    论文通过对287个模型推理实例进行全面分析和分类,发现57%的LLMs响应包含错误,并且模型经常预测出错误的漏洞代码位置和错误的漏洞类型。作者提出的提示方法可以提高模型的性能。数据和代码已在https://figshare.com/s/78fe02e56e09ec49300b上公开。
  • 相关研究
    最近的相关研究包括使用通用提示技术将LLMs应用于漏洞检测。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论