大语言模型与代码安全:系统性文献综述
大语言模型与代码安全:系统性文献综述
大语言模型(LLMs)在代码生成和安全相关任务中展现出巨大潜力,但同时也带来了一系列安全风险。本文通过系统性文献综述,全面分析了LLMs在代码安全领域的应用与风险,包括LLMs生成代码可能引入的安全漏洞、LLMs在漏洞检测与修复中的应用、以及数据投毒攻击对LLMs的影响等多个方面。
基本信息
原文标题:Large Language Models and Code Security: A Systematic Literature Review
原文作者:Enna Basic, Alberto Giaretta
作者单位:Epiroc Rock Drills AB, Örebro University, Sweden
关键词:大语言模型(LLMs)、安全漏洞、LLM生成代码、漏洞检测、漏洞修复、提示工程、数据投毒
研究背景与目的
近年来,以ChatGPT、Llama、GitHub Copilot和BERT为代表的LLMs在自然语言处理领域取得了显著进展,尤其在代码生成、代码理解、调试和问题解答等方面表现出色。GitHub数据显示,GitHub Copilot生成的代码量已占46%,可使开发效率提升55%。然而,LLMs在代码生成方面的局限性也带来了不容忽视的安全风险。例如,LLMs可能缺乏对安全编码实践的充分理解,且训练数据集多来自未经严格验证的在线平台,存在数据投毒风险。
本次系统文献综述(SLR)旨在深入研究以下关键问题:
- LLMs生成的代码可能会引入哪些安全漏洞?
- LLMs在检测和修复漏洞方面的能力如何?不同的提示策略对其性能有何影响?
- 数据投毒攻击如何影响LLMs的代码安全性及其漏洞检测和修复能力?
相关工作
近年来,不少文献综述聚焦于LLMs与代码安全的交叉领域,但大多仅关注一两个方面。本次SLR首次全面覆盖三个主题领域,并率先对LLMs可能引入的漏洞进行系统分类。与现有文献相比,本次研究的独特之处在于:
- 深入挖掘LLMs生成代码可能引入的漏洞,并将其归纳为十个不同类别。
- 研究提示策略对代码安全相关任务的影响。
- 深入剖析数据投毒攻击对LLMs生成安全代码、检测漏洞以及提供修复方案能力的影响。
研究方法
本次研究遵循彼得森等人提出的成熟规范,采用系统文献综述(SLR)方法,主要包括三个阶段:规划阶段、实施阶段和报告阶段。研究者制定了以下研究问题(RQs):
- RQ1:LLMs生成的代码可能会引入哪些安全漏洞?
- RQ2:LLMs在检测和修复人类编写的代码以及LLMs自身生成的代码中的漏洞方面,能达到何种程度?
- RQ2.1:不同的提示技术对LLMs在检测和修复代码漏洞方面的有效性有何影响?
- RQ3:训练数据集被投毒对LLMs生成安全代码、检测和修复漏洞的能力有何影响?
研究发现
安全漏洞
通过对20篇相关研究的梳理,研究者将LLMs生成代码可能引入的漏洞归纳为10个类别。其中,注入漏洞最为常见,有16项研究涉及;而错误处理漏洞仅在3项研究中被讨论。这些漏洞被识别后,多数被纳入MITRE 2023年发布的“CWE最危险的25个软件缺陷”名单。
漏洞检测
LLMs在代码审查过程中识别安全漏洞方面展现出潜力,但性能并不稳定,普遍存在误报率较高的倾向。提示策略对LLMs的检测效果有显著影响。
漏洞修复
LLMs能够修复一些简单的问题(例如内存泄漏),但在处理复杂缺陷时效果不佳。微调可以提高LLMs的修复能力,但这种提升仅限于模型训练过的漏洞类型。
统一检测与修复流程
研究者探讨了LLMs在统一连贯流程中同时完成漏洞检测与修复的潜力,以及通过微调技术提升其性能的可能性。
数据投毒攻击
数据投毒攻击不仅可能导致LLMs生成不安全的代码,还可能影响其漏洞检测能力。当前研究主要集中在投毒对代码生成的影响,而对其如何影响漏洞检测和修复能力的研究仍较少。
结论
本次系统文献综述全面分析了LLMs在代码安全领域的应用与风险。研究发现,LLMs在代码生成、漏洞检测与修复方面均展现出潜力,但也存在诸多局限性。未来研究应重点关注:
- 提示策略对LLMs性能的影响
- 数据投毒攻击对LLMs漏洞检测和修复能力的具体影响
- 开发更有效的微调方法以提升LLMs在安全相关任务中的表现
本文来自安全极客,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。