分享自:

基于集成大语言模型的代码漏洞检测:一项实证评估

期刊:J. ACM

本次介绍的学术论文题为《Ensembling Large Language Models for Code Vulnerability Detection: An Empirical Evaluation》,由来自中国多所高校与研究机构的学者共同完成。主要作者包括Zhihong Sun(山东师范大学)、Jia Li(清华大学人工智能学院)、Yao Wan(华中科技大学)、Chuanyi Li(南京大学软件新技术国家重点实验室)、Hongyu Zhang(重庆大学)、Zhi Jin(北京大学)、Ge Li(北京大学)、Hong Liu(山东师范大学)、Chen Lyu(山东师范大学,通讯作者)以及Songlin Hu(中国科学院信息工程研究所)。该研究于2025年9月发表于《Journal of the ACM》(J. ACM)期刊第37卷第4期。

这篇论文属于一个原创性的实证研究(类型a),旨在系统性地探索集成学习(Ensemble Learning)如何提升大语言模型在源代码漏洞检测任务中的性能。源代码漏洞检测对于保障现代软件系统的安全与可靠性至关重要。近年来,大语言模型(LLMs)在该领域展现出了巨大的潜力。然而,研究者观察到,即使是同一个大语言模型在其不同的训练阶段,或是不同架构的大语言模型之间,对于同一段代码的漏洞检测结果也常常存在显著差异。这种不一致性虽然可能影响检测的稳定性,但也揭示了一个关键机遇:模型之间潜在的互补性可以通过集成学习被有效利用,从而构建更鲁棒的漏洞检测系统。因此,本研究的核心目标是通过全面的实证评估,验证集成学习在提升LLM漏洞检测能力方面的有效性,并探索不同集成策略在不同场景下的表现。

研究设计了一套详细且严谨的工作流程,包含以下几个关键步骤:

首先,是研究问题定义与实验框架构建。 研究提出了三个具体的研究问题(RQs)来指导整个探索过程:RQ1探讨集成学习是否以及如何能够提升LLM在漏洞检测中的有效性;RQ2则聚焦于比较研究者提出的新型集成方法(动态门控堆叠,Dynamic Gated Stacking, DGS)与传统堆叠算法的性能;RQ3旨在分析不同的集成学习方法在检测不同类型的漏洞时是否表现出偏好性。为了回答这些问题,研究选定了三个广泛使用的基准数据集:Devign(平衡数据集)、Reveal(不平衡数据集)和BigVul(多类别漏洞检测任务)。同时,选取了五个具有代表性且开源的大语言模型作为后端基础模型,分别是DeepSeek-Coder-6.7B、CodeLlama-7B、CodeLlama-13B、CodeQwen1.5-7B和StarCoder2-15B。所有模型均采用参数高效微调技术(QLoRA)在训练集上进行微调,以适应漏洞检测这一分类任务,并选取在验证集上表现最佳的检查点用于后续测试。

其次,是集成策略的实施与评估。 针对RQ1,研究应用了三种经典的集成学习方法——装袋法(Bagging)、提升法(Boosting)和堆叠法(Stacking)。具体操作上:装袋法通过对训练数据进行有放回的自助采样(Bootstrap Sampling)创建多个训练子集,每个子集上训练一个同质的LLM,然后通过硬投票或软投票(分别记为Bagging_h和Bagging_s)聚合预测结果,总共生成了5个子集。提升法(基于AdaBoost思想)则在原始数据集上进行多轮顺序训练,每一轮训练后根据模型的分类错误率调整样本权重,使得后续轮次更关注被错误分类的样本,最后通过加权投票集成所有轮次模型的预测。堆叠法则以五个不同的LLM作为异质基模型,在验证集上获取它们的预测结果,然后将这些预测结果作为特征,去训练一个元模型(如逻辑回归、随机森林、支持向量机、k近邻算法),由元模型做出最终决策。所有实验均在三个数据集上针对每个LLM或LLM组合重复进行,以确保结果的稳定性,并采用准确率、精确率、召回率和F1分数作为评估指标。对于多分类的BigVul数据集,采用了加权评估指标。

第三,是提出并验证新方法(DGS)。 受混合专家(Mixture of Experts, MoE)技术启发,研究者针对传统堆叠法在应对不平衡数据集和多分类任务时的局限性,提出了一种变体——动态门控堆叠(Dynamic Gated Stacking, DGS)。DGS的核心创新在于其门控机制:与堆叠法仅以基模型的预测作为元模型输入不同,DGS的元模型同时接收源代码本身的特征(如代码嵌入)以及基模型的预测。这使得DGS能够根据输入代码的具体特征,动态地决定各个基模型预测的权重或选择最合适的专家模型,从而更好地捕获复杂的代码结构和语义信息,尤其是在处理类别不平衡问题时。

第四,是不同漏洞类型的专项分析。 为了回答RQ3,研究者从BigVul数据集中提取了出现频率最高的10种通用漏洞枚举(CWE)类型,分别创建子数据集。在这些特定漏洞类型的子集上,系统评估了各种集成方法(包括提出的DGS)的检测性能,以探究不同集成策略对不同类型漏洞(如内存相关漏洞、权限控制漏洞等)的检测偏好和能力差异。

研究的主要结果丰富且具有深刻的洞察:

关于RQ1,集成学习被证明能够显著提升LLM的漏洞检测性能。 综合15个实验场景(5个模型×3个数据集),所有集成方法的平均排名均优于未使用集成的基线LLM。提升法(Boosting)在召回率和F1分数上表现尤为突出,其平均排名分别为1.87和1.60(排名越低越好)。一个关键的发现是,在不平衡的Reveal数据集上,除了提升法,其他集成方法(装袋法和堆叠法)均未能带来性能提升,甚至有所下降。而提升法则在该数据集上表现出显著优势,平均将召回率相对基线提升了34.38%。这得益于其内在的权重调整机制,该机制可视化分析证实,提升法在训练过程中会逐渐赋予难以分类的少数类(即漏洞代码)样本更高的权重,从而有效减少漏报。在平衡的Devign数据集上,堆叠法和提升法表现相当。在BigVul多分类任务上,软投票装袋法在准确率、加权精确率和加权召回率上表现优异,而提升法则在加权F1分数上领先。

关于RQ2,提出的DGS方法展现出针对性的优势。 在平衡的Devign数据集上,不同元模型的传统堆叠法各有千秋:k近邻元模型在召回率和F1上表现最佳,逻辑回归和随机森林分别在准确率和精确率上领先。然而,在不平衡的Reveal数据集和多分类的BigVul任务中,传统堆叠法表现不佳,而DGS则在两个任务上都超越了基线LLM和传统堆叠法,尤其在Reveal数据集上取得了最佳的F1和召回率。这表明,通过整合源代码特征,DGS能够更好地识别少数类样本,并处理更复杂的分类场景,验证了其设计有效性。

关于RQ3,集成学习方法对特定类型漏洞的检测表现出明显的偏好。 实验发现,大多数集成方法(特别是提升法)在检测与内存操作相关的漏洞类型时,表现出一致的优势,例如CWE-119(缓冲区边界操作不当)、CWE-120(缓冲区溢出)、CWE-125(越界读取)和CWE-416(释放后重用)。这提示集成学习尤其擅长捕捉此类模式。另一方面,对于涉及多层次、复杂权限与访问控制的漏洞(如CWE-264),传统集成方法表现不佳,而DGS却能够显著超越基线。研究者认为,这是因为DGS通过源代码特征更好地理解了代码的上下文和结构,从而更准确地检测出这类与逻辑和上下文紧密相关的漏洞。

基于以上结果,研究的主要结论是:集成学习是提升大语言模型源代码漏洞检测性能的有效途径,能够显著提高检测的准确性和鲁棒性。具体而言:1) 在处理类别不平衡数据时,应优先考虑使用提升法,因为它能有效提高召回率,减少漏洞漏报。2) 提出的动态门控堆叠(DGS)方法成功解决了传统堆叠法在不平衡数据和多分类任务上的短板,通过结合代码特征实现了更优的性能。3) 不同的集成方法在不同类型的漏洞检测上各有所长,例如提升法擅长内存相关漏洞,DGS擅长复杂的多层级权限漏洞。这为面向特定漏洞类型构建针对性检测系统提供了参考。

本研究的科学价值与应用价值显著。在科学上,这是首项系统探索集成学习与大语言模型在漏洞检测领域协同作用的研究,填补了该领域的空白。它揭示了不同LLM之间及其不同训练阶段之间存在可被利用的预测互补性,并量化了这种互补性通过集成带来的性能增益。在应用上,研究为软件开发安全领域的从业者提供了切实可行的指导:在选择漏洞检测工具或构建自动化检测流程时,可以考虑采用集成学习策略来组合多个LLM,尤其是在面对不平衡的真实世界代码数据时,提升法是一个强有力的选项。研究还指出了结合集成学习与混合专家(MoE)框架的未来方向,以更精细化地利用不同LLM在特定漏洞类型上的“专家”能力。

本研究的亮点在于:1) 开创性:首次系统性地将集成学习应用于LLM驱动的漏洞检测,并进行了大规模实证评估。2) 方法新颖:创造性地提出了动态门控堆叠(DGS)方法,借鉴MoE思想改进了传统堆叠法,提升了模型对复杂代码语义和不平衡数据的处理能力。3) 分析全面深入:不仅比较了整体性能,还深入到数据平衡性、任务类型(二分类/多分类)以及具体的漏洞类别等多个维度进行分析,得出了细致而有指导意义的结论。4) 实证支撑扎实:通过大量实验、可视化分析和针对“分歧样本”的研究,从多个角度验证了集成学习利用模型互补性的机制和效果。5) 开源共享:研究者公开了实验数据和代码,促进了该领域的进一步研究与复现。

其他有价值的内容包括研究对计算成本的讨论,承认了集成学习带来的训练和推理开销增加,为实际部署提供了权衡视角。同时,研究也指出了其内部效度(如超参数调优可能非最优)和外部效度(所选方法、模型和数据集的范围有限)方面的局限性,体现了学术严谨性。这些讨论为后续研究指明了优化效率和拓展泛化性的方向。这项研究为构建更可靠、更有效的大语言模型漏洞检测系统提供了宝贵的理论依据和实践洞见。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com