华为联合北大研究成果实现漏洞补丁定位效率突破,助力开源漏洞快速修复

日期 2025/07/04

华为云PaaS技术创新Lab联合北京大学研究团队,共同推出Taper系统,通过版本感知过滤和混淆补丁增强模型,高效精准地解决开源软件补丁定位的效率与准确性难题,成果发表在FSE 2025。

33rd ACM International Conference on the Foundations of Software Engineering, Industry Track

引言

开源软件(OSS)已成为现代软件开发的核心组成部分,但其广泛使用也带来了显著的安全风险。近年来,OSS漏洞数量呈指数级增长,例如2024年报告的CVE漏洞数量超过40,000个。这些漏洞一旦被利用,可能导致严重的安全事件,如数据泄露或服务中断。尽管大多数漏洞最终通过安全补丁修复,但研究表明,超过90%的CVE漏洞并未明确关联到对应的漏洞修复补丁。这种漏洞与漏洞修复补丁信息断裂的现象使得开发者难以及时识别和应用安全更新,也阻碍了补丁知识的有效复用。在国际网络安全环境日趋复杂的今天,这种信息不对称的状况更有可能被恶意利用,形成供应链安全中的"卡脖子"隐患。

为应对这一挑战,安全补丁定位技术应运而生,其核心思路是通过计算漏洞描述与提交Commit之间的语义或词汇相似性实现将公开披露的漏洞(如CVE条目)与其对应的代码修复补丁进行准确关联。然而,现有的这些方法(包括PatchScout、VCMatch和PatchFinder等)在工业级应用中存在显著局限:

  1. 效率瓶颈:主流OSS项目通常具有庞大的提交历史。例如,Git项目在漏洞CVE-2024-32002的修复窗口期内产生了上千个提交。现有方法采用宽时间窗口搜索策略(如检查漏洞发布前后1年的提交),导致单次漏洞定位需要检查数百至数千个提交,计算开销巨大,难以满足企业级的大规模分析需求。
  2. 混淆补丁问题:在实际开发中,安全漏洞的修复往往伴随一系列相关但非修复性的代码变更(称为混淆补丁)。例如,在修复路径遍历漏洞时,开发者可能同时提交额外的输入验证逻辑作为防御性措施。现有方法的训练数据通常仅包含真实补丁和随机选取的负样本,无法有效建模这类语义相近但功能不同的混淆补丁,导致误报率居高不下。

这些局限性使得现有方法在华为云等工业场景中的实用性受限。企业需要能够高效处理海量仓库(每日分析数千个仓库)、且能精准区分混淆补丁的解决方案。为解决上述问题,华为云PaaS技术创新Lab联合 北大研究团队提出Taper——一个基于两阶段策略的工业级补丁定位系统。

阶段1:版本感知的候选过滤

研究团队发现,利用CVE描述中天然存在的版本边界信息(如"影响2.39.3及更早版本,已在2.39.4修复"),可以大幅缩小搜索范围,从而解决效率瓶颈问题。因此Taper使用了基于Qwen-2.5 7B的微调模型作为版本提取器,从CVE描述中精确提取版本信息,依据版本信息对候选Commit进行过滤,将需要分析的提交数量降低一个数量级。

阶段2:混淆补丁增强的定位模型

对于混淆补丁问题,本文研究团队提出"时间共现假设":开发者修复漏洞时往往会集中提交一系列相关修改,这些修改虽然可能涉及相同的代码文件或相似的安全主题,但并不直接解决当前漏洞。因此,Taper将真实补丁周围的提交(如前后10个)作为高质量的负样本,微调模型以使模型具备区分真实补丁与混淆补丁的能力。最后Taper以CVE描述、提交信息(消息、代码差异)及相关Issue内容作为输入,使用该微调模型输出是否为修复补丁的二元判断。

图1 Taper架构图

为了验证Taper的有效性,研究团队构建了一个包含2,128个CVE的大规模评估数据集,这些漏洞来自978个开源项目,覆盖了多种主流的编程语言,具有良好的代表性。评估结果显示,Taper的MRR达到0.651,较PatchFinder提升0.422;Recall@1为54.5; 与同类工作相比,Taper采用的版本过滤方法将待检提交中位数从481降至36,降低92.5%的计算开销。该系统已部署于华为云,累计处理漏洞52,140个,平均每个漏洞仅需人工验证1.73个候选提交,验证了其在真实场景的有效性。本文为OSS供应链安全提供了可落地的解决方案,同时揭示了混淆补丁处理对研究社区的重要启示。

上述研究成果《Efficient and Robust Security-Patch Localization for Disclosed OSS Vulnerabilities with Fine-Tuned LLMs in an Industrial Setting》已发表在FSE 2025 Industry,上周在挪威举行的FSE 2025上进行正式报告,欢迎大家了解学习,可从 https://dezhi-ran.com/publication/fse25-taper/fse25-taper.pdf 获取论文,有合作意向欢迎联系 liangguangtai@huawei.com, tanxin50@huawei.com

具体方案设计

Taper方法的技术创新主要体现在其精心设计的两阶段处理流程上,这一架构巧妙地平衡了处理效率与识别精度这两个看似矛盾的需求。在第一阶段,Taper重点解决搜索空间过大的问题。与现有方法普遍采用的基于时间窗口的过滤策略不同,Taper另辟蹊径地利用了漏洞描述中天然存在的版本信息。具体而言,研究团队观察到超过90%的CVE描述都会明确指出受影响的版本范围和修复版本,这些信息实际上为提交检查提供了理想的边界条件。然而,由于不同项目采用的版本命名规范千差万别,直接从描述文本中提取可用的版本信息具有相当难度。

为了解决这一技术挑战,研究团队首先构建了一个包含500个CVE的标注数据集,通过人工标注的方式精确标记了每个漏洞的受影响版本和修复版本信息。值得注意的是,对于描述中确实不包含版本信息的少数情况(约7.6%),团队特意将其标注为"None"而非强行推断,这种处理方式有效避免了模型产生幻觉性输出。基于这一高质量数据集,团队采用参数高效的LoRA技术对Qwen-2.5-7B模型进行微调,仅更新少量模型参数就实现了0.893的版本提取准确率。在实际应用中,当输入一个新的CVE描述时,微调后的模型能够准确输出结构化版本信息,这些信息随后被用于从项目历史中筛选出两个版本之间的所有提交,从而将待检查的提交数量从平均上千个锐减至几十个。

进入第二阶段后,Taper的工作重点转向提高补丁识别的准确性,特别是增强对混淆补丁的辨别能力。传统方法通常使用随机采样的非安全提交作为负样本,这种做法难以捕捉真正安全补丁与混淆补丁之间的细微差别。Taper的创新之处在于提出了一种自动化收集硬负样本的机制:对于每个已知的安全补丁,收集其前后各N个(默认为10个)邻近提交作为混淆补丁。这种设计基于一个重要的实证发现:开发者修复漏洞时往往会集中提交一系列相关修改,这些修改虽然可能涉及相同的代码文件或相似的安全主题,但并不直接解决当前漏洞。

为了训练模型准确区分这些高度相似的样本,研究团队设计了包含多维度信息的提示模板。除了基本的CVE描述和提交差异(diff)外,模板还整合了提交关联的问题跟踪信息(如GitHub Issue),这些上下文信息对于理解提交的真实意图往往具有关键作用。在模型训练策略上,团队同样采用LoRA进行参数高效微调,这使得在保持高性能的同时,计算资源消耗被控制在工业应用可接受的范围内。评估表明,经过这种针对性训练的模型能够将平均每个CVE需要人工复核的提交数量控制在1.73个,相比基线方法的5.41个有了显著改善。

实验结果

为了全面评估Taper方法的有效性,我们设计了一套系统化的实验方案,覆盖了方法性能的多个维度。实验使用的数据集包含2,128个真实世界的CVE及其对应补丁,来源包括公开的CVE-fixes数据集和华为云内部收集的案例,确保了数据的多样性和代表性。特别值得注意的是,如图3所示,数据集在编程语言分布上保持了良好的平衡,避免了以往研究中常见的C/C++项目占比过高的问题,这使得评估结果更具普遍意义。

图2 数据集分布情况

在整体有效性方面,Taper展现出了压倒性的优势。如图4所示,与当前最先进的PatchFinder方法相比,Taper将MRR指标从0.229提升至0.651,Recall@1更是从0%飞跃到54.5%。这一突破性进展主要归功于两个方面:一是基于版本的精确过滤大幅减少了干扰项的数量,二是针对混淆补丁的专门训练显著提升了模型的辨别能力。进一步分析发现,即使对PatchFinder使用与Taper相同的训练数据进行微调,其性能提升仍然有限(MRR仅达到0.229),这充分说明Taper的优势源自其创新的架构设计,而非单纯的数据优势。此外,PatchFinder相较于其原论文报告结果出现显著的性能下降,经过分析我们发现这是由于我们的评估数据集更能真实反映当前工业环境中的安全补丁定位场景。一方面如图3所示,我们的数据集在编程语言分布上更为均衡,而PatchFinder原始数据集中C/C++代码库占比高达88%,存在明显偏差。另一方面,我们的数据集在代码库多样性方面也表现更优。PatchFinder原始数据集中41%的样本仅集中在5个代码库(占总代码库数量的1%),这种高度集中的分布可能严重影响模型的泛化能力。此外我们还进行了充分的消融实验,深入探讨了不同技术选择的影响,包括是使用不同的基模型和是否进行模型微调。

图3 Taper整体有效性

Taper在华为云的实际部署表现验证了其在真实工业环境中的价值。系统运行800多小时期间,成功处理了52,140个CVE的补丁定位请求,平均每天为华为云的安全团队节省大量人工审核时间。部署架构采用分布式设计,使用120个Docker容器并行处理任务,4块华为Ascend NPU负责模型推理,展现了良好的可扩展性。这些补丁信息被整合到华为云的漏洞管理系统中,为其企业客户提供了更及时的安全防护能力。

总结

本文提出的Taper方法代表了安全补丁定位技术发展的重要里程碑,其创新价值主要体现在三个方面:方法论上的突破、工程实践上的优化,以及学术与工业的深度融合。在方法论层面,Taper首次系统性地解决了工业环境中面临的两大核心挑战——效率与鲁棒性。通过将问题分解为版本过滤和补丁识别两个阶段,并针对每个阶段的特性设计专门解决方案,该方法实现了性能的全面提升。特别是对混淆补丁现象的研究和处理,为后续相关工作提供了重要的技术参考。

PaaS技术创新Lab隶属于华为云,致力于综合利用软件分析、数据挖掘、机器学习等技术,为软件研发人员提供最先进的核心引擎和智慧大脑,聚焦软件工程、软件安全领域的硬核能力,并持续为华为云相关产品孵化并交付高价值商业特性核心技术!

有合作意向欢迎联系 liangguangtai@huawei.com, tanxin50@huawei.com