【论文速读】| 大语言模型与代码安全:一项系统性文献综述

admin 2025年3月12日22:58:46评论16 views字数 5941阅读19分48秒阅读模式
【论文速读】| 大语言模型与代码安全:一项系统性文献综述

基本信息

原文标题:Large Language Models and Code Security: A Systematic Literature Review
原文作者:Enna Basic, Alberto Giaretta
作者单位:Epiroc Rock Drills AB, Örebro University, Sweden
关键词:大语言模型(LLMs)、安全漏洞、LLM生成代码、漏洞检测、漏洞修复、提示工程、数据投毒
原文链接:https://arxiv.org/abs/2412.15004

论文要点

论文简介:大语言模型(LLMs)作为实现各类编程任务自动化的得力工具,在安全相关任务领域同样发挥着重要作用,比如在漏洞检测与修复方面表现突出。其强大的能力为编程工作带来了诸多便利,然而,这并不意味着大语言模型毫无瑕疵。在实际应用中,当需要大语言模型生成全新代码或者对已有代码进行修改时,就可能会产生一些潜在风险,它们有可能引入程序员难以察觉的漏洞,给代码安全埋下隐患。而且,在执行代码分析任务时,大语言模型也并非万无一失,可能会出现遗漏明显漏洞的情况,导致安全风险未被及时发现,或者发出误报,将本不存在的漏洞指认出来,干扰正常的开发流程。
鉴于大语言模型在代码相关任务中的广泛应用,对其深入研究显得尤为必要。在本次系统文献综述(SLR)中,研究者将全面剖析大语言模型在各类代码相关任务中带来的安全益处与潜在弊端。具体研究内容主要涵盖三个方面:其一,聚焦大语言模型在生成代码过程中可能引入的具体漏洞类型,深入探究这些漏洞产生的原因与机制;其二,分析大语言模型在检测和修复任意给定代码中漏洞的实际能力,同时重点研究不同提示策略对这两项任务表现的影响,明确何种提示策略能让大语言模型在漏洞检测与修复中发挥出最佳效能;其三,深入剖析针对大语言模型的数据投毒攻击,探讨这种攻击方式对上述代码生成、漏洞检测与修复等任务产生的影响,从而为防范此类攻击提供理论依据。
研究目的:论文旨在探讨以下关键问题。
1. LLMs生成的代码可能会引入哪些安全漏洞?
2. LLMs在检测和修复漏洞方面的能力如何?不同的提示策略对其性能有何影响?
3. 数据投毒攻击如何影响LLMs的代码安全性及其漏洞检测和修复能力?

引言

在自然语言处理领域,机器学习(ML)模型得到了广泛应用。近年来,ChatGPT、Llama、GitHub Copilot和 BERT 等具有代表性的大语言模型(LLMs),凭借在各类任务中的出色表现,获得了极高的人气与广泛认可。
LLMs 具备多种强大能力,尤其在将自然语言解释转化为代码、辅助代码理解、调试以及解答代码相关问题等方面表现突出。众多开发者借助这些能力优化编码流程,有效缩短开发周期,大幅提升工作效率。GitHub 统计数据显示,GitHub Copilot 目前生成的代码量约占 46%,可使开发者的编码速度提升高达 55%。不仅如此,在提供详细提示与明确背景信息的情况下,LLMs 还能成为检测和修复漏洞的有力工具。
然而,尽管 LLMs 在代码生成方面取得显著进展,但其存在的一些局限性也带来了不容忽视的安全风险。一方面,虽然 LLMs 能够熟练生成功能性代码,但常常对安全编码实践缺乏足够的认知与理解。另一方面,LLMs 训练依赖的庞大数据集,多从未经严格验证的在线平台(如 GitHub和 HuggingFace)收集,这使得其面临数据投毒风险,即攻击者可能将恶意数据样本混入训练集。这些缺陷不仅可能导致 LLMs 生成存在安全隐患的代码,还会对其检测和修复安全漏洞的能力产生负面影响。
鉴于 LLMs 在代码相关任务中的广泛应用,尽管存在风险,对于从业者而言,全面、深入地了解其潜在风险与实际优势,是做出明智决策的关键。在本次系统文献综述(SLR)中,研究者旨在:
1. 深入探究 LLMs 生成代码时可能引入的潜在安全漏洞;
2. 评估 LLMs 在检测和修复漏洞方面的效能,以及完成这些任务所采用的提示策略;
3. 研究数据投毒对 LLMs 生成安全代码以及有效检测和修复漏洞能力的影响。

相关工作

近年来,不少文献综述聚焦于大语言模型(LLMs)与代码安全的交叉领域,不过切入点各有不同。在本次系统文献综述(SLR)中,研究者重点关注三大主题领域。过往虽也有研究涉猎这些领域,但往往一次仅聚焦一两个,而研究者的研究是首次全面覆盖这三个方面,并且率先对大语言模型可能引入的漏洞进行系统分类。
以 Negri 等人的研究为例,他们通过系统文献综述探讨了人工智能模型对软件安全的影响,发现大语言模型生成的代码常存在特定漏洞,却未进一步系统分类。研究者在此基础上深入挖掘,将大语言模型生成代码可能引入的漏洞归纳为十个不同类别,并通过量化分析其在各项研究中的出现频率,凸显出研究较少的领域。
与现有文献相比,研究者的研究还有其他独特之处。一方面,尽管已有研究关注大语言模型在漏洞检测和修复方面的表现,却未对两项任务的统一处理流程进行调研,也无人探究提示策略对代码安全相关任务的影响。Yao 等人回顾了大语言模型在安全领域的应用,涵盖漏洞检测与修复,却未涉及提示技术对这些任务的作用,以及如何将检测与修复整合在统一流程中。Zhou 等人概述了提示技术,列举了其在漏洞检测和修复中的应用,但研究者更关注每种提示技术如何影响大语言模型在这些任务中的效能。
另一方面,现有文献在数据投毒攻击对大语言模型代码生成的影响方面存在空白,研究者的研究填补了这一空缺。Yao 等人虽探讨过数据投毒攻击,但未分析其对大语言模型生成安全代码以及漏洞相关任务的影响。Chen 等人回顾了针对代码生成大语言模型的攻防手段,虽提及投毒攻击对生成安全代码的影响,却并非重点,且研究范围还包括代码摘要、代码搜索等非安全相关任务。与之不同,研究者深入剖析安全相关的特定方面,着重探讨投毒攻击如何影响大语言模型生成安全代码、检测漏洞以及提供修复方案的能力。
此外,还有部分研究进行了更为广泛的文献综述,研究范围超出了代码安全。Xu 等人考察了大语言模型在多个网络安全任务中的应用,如漏洞检测、恶意软件分析、网络入侵检测和网络钓鱼检测。Hou 等人全面研究了大语言模型在软件工程中的应用,代码安全只是其中一部分,他们指出代码生成和程序修复是大语言模型在软件开发和维护中最常见的应用场景。Zhang 等人则专注于构建面向网络安全任务的大语言模型的方法。

研究方法

在这项研究中,研究者依据彼得森(Petersen)等人 提出的成熟规范开展了一项系统文献综述(SLR)。研究者的研究方法如图 1 所示,主要包括三个阶段:规划阶段、实施阶段和报告阶段。在本节的剩余部分,研究者将详细阐述规划阶段的内容。
A. 研究问题
研究者制定了以下研究问题(RQs),以指导研究者的调查并助力实现本研究的目标:
・研究问题 1(RQ1):大语言模型生成的代码可能会引入哪些安全漏洞?
・研究问题 2(RQ2):大语言模型在检测和修复人类编写的代码以及大语言模型自身生成的代码中的漏洞方面,能达到何种程度?
– 研究问题 2.1(RQ2.1):不同的提示技术对大语言模型在检测和修复代码漏洞方面的有效性有何影响?
・研究问题 3(RQ3):训练数据集被投毒对大语言模型生成安全代码、检测和修复漏洞的能力有何影响?
B. 检索策略
基于研究者的研究问题,研究者确定了五组关键词,随后用这些关键词来定义研究者的检索字符串:
・第一组:大语言模型、语言模型、大语言模型(LLMs)、CodeX、Llama、Copilot、GPT-*、ChatGPT。
・第二组:代码生成、人工智能生成的代码、自动化代码生成。
・第三组:安全漏洞、安全风险、安全缺陷、安全隐患、软件安全、对代码安全的影响、网络安全、漏洞。
・第四组:训练数据投毒、被投毒的数据集、数据投毒攻击、对抗性攻击、恶意训练数据。
・第五组:漏洞检测、错误检测、安全缺陷检测、代码分析、静态分析、漏洞修复、错误修复、自动化代码修复、安全补丁、代码打补丁。
【论文速读】| 大语言模型与代码安全:一项系统性文献综述
C. 筛选标准
为确保对文献进行相关的综述,研究者定义了具体的纳入和排除标准。研究者设计纳入标准是为了确保所选的论文符合一定的标准和相关性,而排除标准则帮助研究者剔除不符合研究目标或质量标准的论文。论文筛选的详细标准见表一。
鉴于该领域相对较新,且在过去几年中有重大的研究成果,研究者没有制定用于缩小文献发表时间范围的标准。出于同样的原因,研究者也纳入了非同行评审的论文,比如来自 arXiv 的论文,以确保研究者能涵盖该领域最新且最重要的研究进展。

安全漏洞

尽管大语言模型(LLMs)凭借其能够快速生成功能性代码、有效加快开发进程的能力,在相关领域中获得了广泛应用与高度认可,然而,不容忽视的是,其生成的代码可能会引入一些安全漏洞,这些漏洞极有可能被开发人员所忽视,进而对代码的完整性和安全性构成潜在威胁。在本节内容中,研究者将聚焦于通过对本文所分析的多项研究进行梳理后,明确的由大语言模型生成代码所引发的特定漏洞。
经过全面且细致的研究,研究者共计确定了 20 篇针对大语言模型生成代码中存在的漏洞展开讨论的论文。研究者对每一篇论文所着重指出的漏洞进行了系统收集,并依据其特性将这些漏洞归纳为 10 个类别,具体内容呈现在表二之中。在该表中,研究者采用绿色对勾(✓)作为标识,用以清晰表明某项研究是否识别出了特定类别的漏洞。
在深入、详尽地探讨每一类漏洞之前,研究者认为有必要对这 20 篇论文中各类别漏洞被提及和讨论的频率进行深入分析。如图 2 所示,不同作者对各类别漏洞的关注程度在整体上呈现出较为均匀的分布态势,不过,其中仍有部分类别相较于其他类别,被视为在代码安全方面具有更高的关键性和风险等级。例如,在 20 项研究中,有 16 项研究涉及到注入漏洞相关内容;而错误处理漏洞则仅在 3 项研究中被予以讨论。
【论文速读】| 大语言模型与代码安全:一项系统性文献综述
在这些研究过程中,多数研究人员采用通用缺陷枚举(CWE)方法来识别代码中存在的漏洞,并将相应的 CWE 编号整理罗列于表三。其中,许多被识别出的漏洞被纳入美国国家标准与技术研究院(MITRE)2023 年发布的 “CWE 最危险的 25 个软件缺陷” 名单之中;另外一些漏洞虽然未直接出现在该名单上,但通过相关的子 CWE 得以间接体现和关联。
【论文速读】| 大语言模型与代码安全:一项系统性文献综述

用于漏洞检测的大语言模型

在软件开发的早期阶段进行安全代码审查,可以防止安全缺陷被引入代码库中。这有助于降低日后与软件修复和维护相关的成本。手动进行安全代码审查需要耗费大量的时间和精力,尤其是在有大量贡献的大规模开源项目中。因此,能够在代码审查过程中识别安全漏洞的自动化工具非常有益。在这些工具中,大语言模型(LLMs)成为了一种很有前景的检测安全漏洞的解决方案。
本节探讨了如何有效地利用大语言模型来检测代码中的漏洞,具体而言,研究者会突出它们的局限性,将它们的性能与传统方法进行比较,并研究通过微调来提高它们在这项任务中的有效性的潜力。
【论文速读】| 大语言模型与代码安全:一项系统性文献综述

用于漏洞修复的大语言模型

开发人员常常会在他们的代码中引入安全漏洞,一旦这些漏洞被利用,可能会危及系统和应用程序的安全。解决这些漏洞面临着重大挑战,因为手动修复既耗时,又容易出错,而且需要具备专业知识的有经验的开发人员来操作。大语言模型(LLMs)可以帮助识别这些问题的根源,并提供正确的修复方案,从而显著减轻开发人员的工作量。本节将探讨大语言模型在修补漏洞方面的应用,以及通过微调过程来改进这种应用的可能性。

用于检测和修复的大语言模型

随着软件系统日趋复杂,保障其安全性面临着严峻挑战,亟需全新的应对方法,以匹配不断变化的安全威胁。在这一背景下,大语言模型(LLMs)脱颖而出,作为检测与修复软件漏洞的有力工具,展现出巨大的应用潜力。
在第五节和第六节中,研究者分别探讨了大语言模型在漏洞检测和漏洞修复方面的单独应用。而在本节,研究者将着眼于一种更为综合的方法,即运用大语言模型,在一个统一连贯的流程中,同时完成安全漏洞的检测与修复。
此外,研究者还将深入研究大语言模型在其自身生成代码中识别漏洞,并自动进行修复的能力。这不仅有助于提升代码的安全性,还能进一步优化软件开发流程,减少人为干预带来的潜在风险。
最后,本节还将重点介绍如何在漏洞检测与修复的统一流程中,通过微调技术来提升大语言模型的性能。通过精心调整模型参数,使其更贴合实际应用场景,从而更高效、准确地完成漏洞检测与修复任务,为软件系统的安全稳定运行提供坚实保障。
【论文速读】| 大语言模型与代码安全:一项系统性文献综述

用于检测和修复漏洞的提示策略

大语言模型(LLMs)在检测和修复代码漏洞方面的有效性可能会有很大差异,这取决于提示的构建方式。精心设计的提示可以引导大语言模型找到更准确、更高效的解决方案,而不完整或模糊的提示可能会导致得到的解决方案不全面或无效。本节将探讨各种提示策略对大语言模型在检测和修复漏洞性能方面的影响。为了让读者对相关研究有一个总结性的了解,表七列出了不同的提示策略以及相应的研究。

中毒训练数据对大语言模型能力影响

正如研究者在第五节中先前讨论过的,大语言模型(LLMs)可以使用特定任务的数据进行微调,以提高它们在专业任务上的性能。然而,在微调过程中纳入恶意或有害数据(这种行为被称为模型投毒),可能会导致模型受到损害。一般来说,数据投毒的目的是操控模型的输出,使其生成不安全或有害的内容。在本节中,研究者将特别讨论被投毒的训练数据对大语言模型生成安全代码、检测漏洞以及修复漏洞的能力所产生的影响。
【论文速读】| 大语言模型与代码安全:一项系统性文献综述

论文结论

在本文中,研究者进行了一项系统文献综述(SLR),从安全角度探讨了三个关键领域:大语言模型(LLM)生成的代码所引入的漏洞、使用大语言模型检测和修复漏洞,以及投毒攻击对大语言模型处理代码能力的影响。
在通过大语言模型生成代码这一主题方面,研究者的研究结果显示,存在一些关键漏洞,比如 SQL 注入和缓冲区溢出。关于使用大语言模型检测安全漏洞,尽管一些研究成果展现出了潜力,但在本次综述中研究者分析的大多数研究都表明,其性能并不稳定,并且普遍存在误报率较高的倾向。大语言模型在这项任务中的有效性,似乎也受到所采用的提示技术的影响。
至于修复存在漏洞代码的能力,有几项研究表明,大语言模型能够修复一些简单的问题(例如内存泄漏),但在处理复杂的缺陷时却力不从心。尽管微调可以提高大语言模型修复代码的能力,但这种性能提升只能在大语言模型接受过训练的那些漏洞类型上得以实现。
最后,当前的前沿研究重点强调了与被投毒的训练数据相关的风险。这种风险不仅可能导致生成不安全的代码,还可能会影响漏洞检测。然而,关于投毒如何影响大语言模型的漏洞检测和修复能力,仍然存在一些尚未解决的问题。
【论文速读】| 大语言模型与代码安全:一项系统性文献综述
【论文速读】| 大语言模型与代码安全:一项系统性文献综述
【论文速读】| 大语言模型与代码安全:一项系统性文献综述
【论文速读】| 大语言模型与代码安全:一项系统性文献综述
【论文速读】| 大语言模型与代码安全:一项系统性文献综述
【论文速读】| 大语言模型与代码安全:一项系统性文献综述
【论文速读】| 大语言模型与代码安全:一项系统性文献综述

原文始发于微信公众号(安全极客):【论文速读】| 大语言模型与代码安全:一项系统性文献综述

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月12日22:58:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【论文速读】| 大语言模型与代码安全:一项系统性文献综述https://cn-sec.com/archives/3829149.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息