摘要
安全代码审查是一个耗时费力的过程,通常需要与自动安全缺陷检测工具集成。然而,现有的安全分析工具面临着泛化能力差、误报率高和检测粒度粗糙等问题。大型语言模型 (LLMs) 被认为是解决这些挑战的有力候选者。在本研究中,我们进行了一项实证研究,以探索 LLMs 在代码审查中检测安全缺陷的潜力。具体而言,我们评估了六种 LLMs 在五种不同提示下的性能,并将它们与最先进的静态分析工具进行了比较。我们还对性能最佳的 LLM 进行了语言学和回归分析,以识别其响应中的质量问题以及影响其性能的因素。我们的研究结果表明:(1)现有的预训练 LLMs 在安全代码审查方面能力有限,但显著优于最先进的静态分析工具。(2)GPT-4 在提供 CWE 列表作为参考时,在所有 LLMs 中表现最佳。(3)GPT-4 经常生成冗长或不符合提示中给出的任务要求的响应。(4)GPT-4 更擅长识别代码文件中的安全缺陷,这些代码文件包含较少的标记、包含功能逻辑或由参与项目较少的开发人员编写。