软件漏洞是网络安全事件的主要根源。文献[
1]研究表明,约70%的安全漏洞源于软件开发过程中的缺陷,随着软件复杂度的不断提升和漏洞造成的损失日益扩大,源代码漏洞检测面临新的挑战。例如,2021年,Log4Shell漏洞(CVE-2021-44228)全球性爆发,迅速演变为一场波及整个数字生态系统的链式安全危机。权威机构Gartner的研究数据表明,该漏洞涉及全球超过3.5亿台服务器设备以及83%的云服务集群,其冲击波影响至金融、政务、医疗及能源等关键基础设施领域。为在开发早期识别潜在的漏洞并降低安全风险,研究者提出了多种优秀的软件漏洞检测方法,但根据常见漏洞与暴露数据库的统计,漏洞数量仍呈现上升的趋势,这对智能化漏洞检测工作提出了新的技术要求。
源代码漏洞检测是保障软件安全的首要任务。静态源代码漏洞检测方法主要包括4类:基于规则、基于传统的代码相似性、基于机器学习/深度学习(Deep Learning, DL)以及基于大语言模型(Large Language Models, LLMs)的方法。
基于规则的漏洞检测工具能够报告漏洞的具体位置和类型,为进一步漏洞定位及修复提供了详细的信息指导。然而,其检测效率和准确性在很大程度上依赖于专家的经验和知识,专家预定义的规则往往难以全面覆盖真实程序中复杂多变的漏洞类型,无法有效识别所有潜在的漏洞。文献[
2]实验验证,尽管基于规则的检测工具在软件保障参考数据集上表现出理想的性能,但真实世界的漏洞检测表现却不理想。
基于传统的代码相似性检测技术通过分析程序,将代码抽象为中间表征检测漏洞。常见中间表征形式有文本(VUDDY
[3])、抽象语法树(POSTER
[4])、代码属性图(VGRAPH
[5])等。这些技术通过分析源代码的词法、语法和语义,利用程序的结构信息、语义信息检测漏洞,其局限性体现在3个方面:定义漏洞模式高度依赖专家经验,不仅增加人力成本,也限制了检测的灵活性;易受攻击的代码和非易受攻击的代码的细微差别难以区分,误报率高;在处理复杂代码结构时,难以捕捉代码中的上下文语义依赖关系,进一步降低了检测的准确性。
基于深度学习的方法通过词法、语法和语义分析将程序抽象为中间形式,利用深度学习架构学习漏洞特征用来检测漏洞,如利用循环神经网络(SySeVR
[6])、卷积神经网络(LATNN
[7])、图神经网络(LineVD
[8])以及预训练Transformer架构(LineVul
[9])等。其核心在于利用神经网络训练漏洞检测模型,根据学习到的漏洞特征模式来检测潜在漏洞。这种自动学习漏洞特征的技术,发掘了漏洞挖掘新潜力,然而同样存在一定局限。深度学习模型在捕获代码中的长距离语义依赖方面存在困难,可能导致某些复杂漏洞的漏检;模型的性能受检测任务的影响,模型泛化能力差,文献[
10]研究表明不同类型的漏洞往往对应不同的数据分布,单一漏洞类型的检测性能通常优于多类型漏洞检测;检测性能受到模型架构和数据集质量的限制,文献[
11]显示真实数据集检测性能急剧下降。
LLMs已在漏洞检测任务中展现出巨大的应用潜力,其发展可以概括为3个阶段。早期探索期,该阶段直接利用通用LLMs(如GPT),验证其零样本/少样本漏洞检测的可行性;专业适应期,以CodeBERT、CodeLlama等代码预训练模型为基础,通过微调(Fine-Tuning)和高级提示工程技术,使其专门化;LLMs与传统分析工具在系统协同工作,构建混合智能框架。本文主要聚焦2022—2025年来利用LLMs进行源代码漏洞检测的最新研究成果,系统性分析LLMs适配漏洞检测的技术,并展望未来研究方向。
1 相关知识
LLMs是以多层Transformer架构为核心的深度学习模型,通过海量参数与复杂网络结构实现对多模态数据(文本、源代码等)的自监督学习,最终获得高效执行多样化自然语言任务的能力。LLMs在自然语言处理领域的成功探索,激发了研究者将其应用于网络安全等下游任务的研究热情,如漏洞检测、恶意代码分析和漏洞修复等。为使LLMs更好地适应特定任务,研究者使用多种提升性能的适配技术,主要包括如下3种。
1)微调。微调是指对预训练LLMs的参数进行调整,使其适应特定任务。虽然预训练模型已经掌握广泛的通用语言知识,但这些知识在特定应用场景中可能并不完全适用。因此,通过在特定任务的数据集上对模型进行进一步训练,能够使其更好地契合目标任务的需求。全参数微调更新模型中的所有参数,这种技术适用于任务数据充足且与预训练数据差异较大的场景。参数高效微调指仅调整模型的一部分参数,降低计算和存储成本。低秩适应(Low-Rank Adaptation, LoRA)是其中常用的微调技术,通过在Transformer层中插入低秩可训练矩阵来调整模型,同时保留了原始权重。
2)提示工程。提示工程根据任务需求,通过精心设计输入提示,优化LLMs输出。常用的技术包括零样本提示、少样本提示和思维链提示。零样本提示不需要额外的训练数据,直接利用LLMs的预训练能力,通过设计合适的提示来引导模型输出。少样本提示通过少量标注数据优化模型的提示设计,提升模型对任务的理解。思维链提示(Chain-of-Thought Prompting, CoT)通过引导模型生成中间推理步骤来增强其推理能力。与传统上下文学习(In-Context Learning, ICL)不同,CoT不仅提供问题描述,还包含一系列清晰的推理步骤。这有助于模型更精准地把握任务目标,并逐步推导出最终答案。鉴于漏洞检测需要深入理解复杂的代码逻辑(如函数调用、控制流和数据流),思维链提示通过引导模型生成中间推理步骤,能更有效地揭示潜在漏洞。同时,由于该过程生成了可追溯的中间步骤,模型的决策逻辑变得更为透明,从而提升了其可解释性。
3)检索增强(Retrieval Augmentation Generation, RAG)。RAG是一种需要借助外部知识增强模型在特定领域生成能力的技术。在漏洞检测中,通过引入外部知识库,RAG技术能够提供更丰富的上下文信息,提高模型的判断准确性,减少误报率。
2 LLMs漏洞检测技术文献分类
从国际权威文献数据库筛选出33篇2022—2025年与漏洞检测密切相关的研究文献,并划分为5类。1)综述类研究:主要探讨漏洞检测领域的研究现状与发展趋势;2)LLMs与传统检测方法的对比研究:重点对比分析LLMs相较于传统方法的优势与局限;3)LLMs检测性能评估研究:深入探讨LLMs在不同场景下的检测效能;4)数据集相关研究:主要研究实践中形成的基准数据集;5)模型幻觉研究:分析模型幻觉对检测性能的影响。
文献[
12-
16]全面探讨了LLMs在网络安全领域的多元化应用,其研究范围涵盖漏洞检测与修复、恶意软件分析等传统安全任务。基于现有研究基础,本文聚焦LLMs在漏洞检测这一核心领域的应用,从模型架构选择、性能评估、影响因素分析等多个维度展开系统性研究。通过系统性地梳理和分析这些最新研究成果,本文旨在全面把握LLMs在漏洞检测领域的研究现状、技术进展及未来发展方向,为后续研究提供理论参考和实践指导。
2.1 LLMs漏洞检测常用模型
重点分析文献中使用的大型语言模型及数据集的使用情况。在研究文献中,GPT系列模型在漏洞检测研究中占比最高,达到28%,这主要得益于其在自然语言理解和代码语义分析方面的卓越表现;LLaMA和CodeLlama模型分别占比15%和12%,这两种模型因其在代码表征学习方面的优势而受到研究者青睐;CodeBERT作为专门针对代码理解任务设计的预训练模型,也在研究中得到了广泛应用,这反映出领域特定模型在漏洞检测任务中的重要性。
2.2 LLMs漏洞检测模型常用数据集
基于LLMs的常用数据集如
表1所示。
表1详细列出了这些数据集的语言类型、检测粒度、规模、数据来源等信息。这些公开数据集的有效利用不仅推动了漏洞检测技术的发展,也为评估不同检测方法的性能提供了标准化基准。
表1显示,基于LLMs的漏洞检测技术使用的数据库聚焦C/C++和Java编程语言。这一趋势可能源于这些语言的广泛应用及其在安全关键领域的重要性。尤其是C/C++语言,因其手动内存管理机制与指针运算特性,更易引发内存安全漏洞,故针对此类语言的漏洞检测需求具有显著紧迫性。
在检测粒度方面,选择函数作为漏洞检测粒度有理论和实验依据,因为函数是实现特定功能的完整单元。文献[
23]研究表明了函数粒度能在漏洞检测中达到可扩展性和精确性的平衡。代码切片粒度能够捕捉跨函数或跨模块的复杂漏洞模式,提供更精细的漏洞定位能力,随着漏洞模式的多样化和复杂化升级,切片级别的漏洞检测方法可能是值得探索的研究方向。
2.3 LLMs漏洞检测评估指标
评估LLMs漏洞检测性能的指标主要有精确率、召回率、F1值、准确率和一致性分数等。
精确率(Precision)是评估分类模型性能的关键指标,用于衡量模型预测为正类的样本(即存在漏洞)中实际为正类(真实存在漏洞)的比例。例如,精确率为90%表示模型每报告10个漏洞,其中大约9个是真实存在的漏洞。该指标直接反映了模型预测结果的准确性,特别是在正类预测中的可靠性。在漏洞检测任务中,高精确率具有至关重要的意义,它意味着模型报告的大部分“漏洞警报”是真实存在的,而非误报。
召回率(Recall)又称查全率,它是针对真实情况而言的,表示模型正确预测为正类的样本数占所有实际正类(真实存在的漏洞)样本数的比例。在漏洞检测中,高召回率意味着模型能检测到更多的真实漏洞,降低漏报率。例如,召回率为90%表示模型能够找出所有真实漏洞中的90%,仍有10%的漏洞未被发现。
在漏洞检测中,高精确率和召回率通常意味着更好的检测性能,但事实上这两个指标在实践中通常会出现矛盾。例如,目标系统中存在10个正样本,但模型只检测到1个正样本且是真实存在的漏洞,即没有误报,此时精确率为100%,但召回率却很低,只有10%。所以,通常综合考虑这两个指标,也就是F1值,即精确率与召回率的调和平均值。F1值越高,说明漏洞检测模型的性能越好。
准确率(Accuracy)指模型预测正确的样本数占总样本数的比例,包括正确识别出的漏洞和正确识别的安全代码,是分类模型性能评估中最直观的指标之一。
为评估模型在多样化场景中的逻辑推理稳定性,文献[
24]引入了一致性分数(Consistency Score)评价指标。该指标通过度量模型输出随任务情境变化的一致性,反映其推理过程的可靠性。一致性分数越高,说明模型在面对相关但具有差异性的输入时,越能保持推理逻辑的连贯性,从而避免出现随机或不一致的响应。
3 LLMs漏洞检测技术性能分析
LLMs在漏洞检测中展现出广阔的应用前景,然而其检测性能受到多种因素的综合影响。为深入探究这一问题,围绕
表2中的实验结果,深入探讨不同LLMs架构和适配策略在漏洞检测任务中的表现差异,并评估其与传统检测方法的协同效果。
表2中的性能指标均源自对应文献,为了便于性能对比,部分指标求取其均值,对于筛选文献中未提及的性能指标,采用空白表示。
3.1 模型规模对检测性能的影响
不同规模模型下检测方法的评估指标如
表3所示。混合模型在平均召回率和平均精确率方面表现最佳;小规模模型取得最好的平均
F1值;中等规模模型表现最差。统计结果表明:面向代码领域专门预训练的小规模模型(如CodeBERT),因其在训练目标、数据与任务上的高度对齐,实现了
F1值的最优表现;中等规模模型在当前评估体系下受限于其通用能力与专业需求间的适配瓶颈,性能表现相对有限;而超大规模模型虽展现出较高的漏洞发现潜力(召回率),却因模型幻觉等问题在判断精确率上存在显著挑战。
3.2 数据集特性对模型选择的倾向性
对现有文献中使用的数据集进行分类统计,如
表4所示。基于单一数据集训练的模型在平均召回率上显著高于基于混合数据集的模型,表明单一数据集在发现潜在漏洞方面覆盖更广;而使用混合数据集的模型则在平均精确率上表现更优,显著高于单一数据集模型,反映出其判断结果更为可靠。在综合性能指标上,两者平均
F1值接近。统计结果表明:数据集的设计需与检测任务的目标相协调。若优先追求漏洞的高召回率,可采用目标明确、标注质量高的单一或同质数据集;若更重视高精确率,则应构建覆盖更广、类型丰富的混合数据集。未来的研究可进一步探索动态或层次化的数据采样与训练策略,使模型既能从混合数据中学习泛化能力,又能通过特定数据的强化训练保持对关键漏洞类型的高敏感度,从而在召回与精确之间实现更优的平衡。
3.3 LLMs针对特定漏洞检测任务适应技术的遵循原则
基于适配技术性能的统计分析如
表5所示。参数微调在平均召回率、平均精确率与平均
F1值上表现最优;提示工程虽能快速建立性能基准,但其效能上限受限于模型固有知识,难以实现深度优化;技术融合策略的平均
F1值已逼近最优的单一参数微调方法,展现出通过技术集成突破性能瓶颈的潜力。
表5的统计结果表明:适配技术的选择构成性能差异的基础逻辑,追求高性能与专业化需依赖参数微调,注重灵活性与低成本可选用提示工程。摒弃单一技术路径,构建技术融合框架,可实现程序深度逻辑与LLMs语义生成能力的有机统一。
3.4 模型融合对提升漏洞检测性能的影响
表3结果显示,混合模型在召回率和精确率表现最佳。文献[
30,
32]的实验结果表明,混合模型在准确率、
F1值和AUC分数等指标上显著优于单个模型,并通过消融研究了不同模型组合对检测性能的影响。多模型融合可以显著提高漏洞检测的性能,并有发现零日漏洞潜力。
3.5 LLMs幻觉对漏洞检测性能影响
幻觉是LLMs在漏洞检测中常见的缺陷之一,由于模型本身的复杂性以及模型缺乏对上下文的理解而产生的幻觉会降低检测性能。文献[
41]通过对LLMs响应的分析,发现由幻觉产生的错误占11%。这种幻觉错误会导致LLMs在解释漏洞时提供不准确的信息,导致误报;文献[
42]研究显示,幻觉问题可能会显著影响LLMs漏洞检测的性能和可靠性,并提出结合RAG减少模型生成幻觉的可能性。
4 研究挑战与展望
尽管基于大语言模型的软件漏洞检测技术近年来取得了显著进展,但在理论研究与实际应用中仍面临一些挑战。
1)漏洞样本数据集规模有限且存在滞后性。当前广泛使用的漏洞数据集,其规模与真实世界漏洞库(如NVD)所收录的漏洞总量相比存在显著差距。而且数据集的构建与更新往往滞后于漏洞的公开与修复周期。这种规模不足且时效性滞后的特点,导致基于此类数据集训练的模型在面对真实、复杂且持续演化的代码环境时,其泛化能力与检测有效性面临严峻考验。
2)代码标准化对漏洞检测性能的影响研究较弱。代码传统漏洞检测技术常利用数据预处理技术,剔除噪音干扰,提高检测性能,但是数据处理对基于LLMs的漏洞检测性能的影响研究较少,当前还没有形成统一标准。例如:文献[
43]在代码规范化前后的数据集上实验对比,结果显示尽管代码规范化能显著减少token数量,但并未显著提升模型性能;文献[
34,
37]使用WizardCoder模型研究数据的平衡性对检测性能的影响,实验结果显示在平衡数据集上的
F1值比非平衡数据集有显著提高。
3)检测泛化能力面临严峻考验。当前方法受限于训练数据多来自于单一数据来源,致使模型易于过拟合特定漏洞模式,泛化至真实复杂项目的能力不足;同时,检测仍主要依赖于对已知漏洞变体的表面模式匹配,对检测零日漏洞能力不足。
4)跨语言漏洞检测研究仍处于初级阶段。尽管已有文献[
41-
45]等研究LLMs漏洞检测的跨语言迁移能力,但当前工作主要集中于C/C++等少数语言,缺乏对Python、JavaScript等语言的广泛研究。不同语言在内存管理、类型系统与并发模型上有根本差异,使得跨语言漏洞表征迁移困难,并且多语言基准数据集的缺失,进一步阻碍了跨语言漏洞检测技术的研究。
在基于LLMs的漏洞检测研究中,“多模型融合”与“适配技术融合”是提升检测性能的两条重要技术路径。
1)多模型融合。“LLMs+传统工具+知识库”的融合框架,是构建高可靠、可解释、自动化漏洞检测系统的研究方向。通过横向大模型融合及纵向集成传统静态分析工具,减少LLMs产生的幻觉,提升漏洞检测的性能。
2)适配技术融合。结合适配技术的特点,通过有机组合高效微调、思维链提示与检索增强生成等技术,形成优势互补的完整适配方案,以更低的成本与更高的灵活性,实现模型在复杂真实场景下的鲁棒且可靠的检测性能。
5 结束语
为系统梳理基于LLMs的软件漏洞检测领域的研究进展,从模型规模、适应技术、数据集特性、模型融合和模型幻觉5个关键维度出发,深入分析其对漏洞检测性能的影响。研究发现:领域专用的小规模预训练模型在综合性能上表现优异,而超大规模模型虽然召回率较高,但是受幻觉问题影响精确率受限;“多模型融合+多技术协同”的混合智能框架在提升漏洞检测性能方面展现出显著优势。当前研究仍面临跨语言检测能力不足、泛化能力薄弱等挑战。未来可深入研究构建“多模型融合+多技术协同”的混合智能框架,探索幻觉抑制与可解释性机制,推动LLMs赋能漏洞检测技术向高精度、低误报、强泛化方向持续发展。