大语言模型与代码安全:系统性文献综述
大语言模型与代码安全:系统性文献综述
大语言模型(LLMs)在代码生成、漏洞检测与修复等方面展现出巨大潜力,但同时也带来了一系列安全风险。本文通过系统性文献综述,全面分析了LLMs在代码安全领域的应用现状与潜在风险,为开发者和研究人员提供了重要参考。
研究背景与目的
近年来,以ChatGPT、Llama、GitHub Copilot为代表的LLMs在自然语言处理领域取得了显著进展,广泛应用于代码生成、代码理解、调试等任务。据统计,GitHub Copilot目前生成的代码量已占46%,可使开发效率提升55%。然而,LLMs在代码生成过程中存在一些局限性,可能引入安全漏洞,同时其训练数据集也面临数据投毒风险。
本次系统文献综述(SLR)旨在深入研究以下关键问题:
- LLMs生成的代码可能会引入哪些安全漏洞?
- LLMs在检测和修复漏洞方面的能力如何?不同的提示策略对其性能有何影响?
- 数据投毒攻击如何影响LLMs的代码安全性及其漏洞检测和修复能力?
相关工作
现有文献综述主要关注LLMs与代码安全的交叉领域,但大多只聚焦于一两个方面。本研究首次全面覆盖LLMs生成代码的漏洞类型、漏洞检测与修复能力、以及数据投毒影响,并对大语言模型可能引入的漏洞进行了系统分类。
研究方法
研究采用彼得森等人提出的系统文献综述规范,通过三个阶段(规划、实施、报告)进行研究。研究问题包括:
- RQ1:LLMs生成的代码可能会引入哪些安全漏洞?
- RQ2:LLMs在检测和修复代码漏洞方面的能力如何?不同提示技术的影响是什么?
- RQ3:训练数据集被投毒对LLMs生成安全代码、检测和修复漏洞的能力有何影响?
通过五组关键词进行文献检索,并制定了详细的纳入和排除标准。
安全漏洞分析
通过对20篇相关研究的分析,将LLMs生成代码可能引入的漏洞归纳为10个类别。其中,注入漏洞最为常见,被16项研究提及,而错误处理漏洞仅在3项研究中讨论。多数研究采用CWE方法识别漏洞,许多被识别出的漏洞被列入MITRE发布的“CWE最危险的25个软件缺陷”名单。
漏洞检测与修复
漏洞检测
LLMs在代码审查中展现出检测安全漏洞的潜力,但其性能不稳定,误报率较高。通过微调可以提升检测效果。
漏洞修复
LLMs能够修复一些简单问题(如内存泄漏),但在处理复杂缺陷时效果不佳。微调可以提高修复能力,但仅限于训练过的漏洞类型。
统一检测与修复流程
研究了LLMs在统一流程中同时完成漏洞检测与修复的能力,以及通过微调提升性能的方法。
提示策略
不同提示策略对LLMs的漏洞检测与修复效果有显著影响。精心设计的提示可以提高准确性,而不完整的提示可能导致无效结果。
数据投毒影响
被投毒的训练数据不仅可能导致生成不安全的代码,还会影响漏洞检测和修复能力。当前研究主要集中在投毒对代码生成的影响,而对其如何影响漏洞检测和修复能力的研究尚不充分。
结论
LLMs在代码安全领域展现出重要应用价值,但同时也存在诸多风险。研究发现:
- LLMs生成的代码存在SQL注入、缓冲区溢出等关键漏洞
- LLMs在漏洞检测中性能不稳定,误报率较高
- LLMs能修复简单问题但难以处理复杂缺陷
- 数据投毒对LLMs的代码安全能力构成威胁
未来研究应重点关注投毒攻击对漏洞检测和修复能力的具体影响,以及如何提升LLMs在代码安全领域的鲁棒性和准确性。