DeepVulMatch:用“匹配”的方式理解漏洞,实现函数级与语句级双粒度检测

DeepVulMatch:用“匹配”的方式理解漏洞,实现函数级与语句级双粒度检测 “ 近年来针对基于深度学习的软件漏洞检测一个现实而棘手的问题逐渐显现出来模型往往“知道有漏洞”却并不真正“理解漏洞”。大量方法将漏洞检测视为一个标准的分类问题通过学习代码特征直接输出“有 / 无漏洞”的判断。这类方法在同分布数据上表现良好但在跨项目、跨版本、跨漏洞模式场景下泛化能力往往不足。针对这一问题论文提出 DeepVulMatch从“分类”转向“匹配”通过学习潜在漏洞表示在代码之间进行语义层面的漏洞匹配并同时支持函数级与语句级的双粒度检测。 ”论文标题DeepVulMatch: Learning and Matching Latent Vulnerability Representations for Dual-Granularity Vulnerability Detection发表时间IEEE TRANSACTIONS ON RELIABILITY , 2025作者单位墨尔本大学、莫纳什大学开源代码https://github.com/awsm-research/DeepVulMatch01—方法介绍如图1所示每个函数都包含一条具有相似漏洞范围的漏洞代码行。这表明即使两个函数包含相同的CWE-787越界写入漏洞特定的易受攻击代码行也可能以不同的方式编写并位于代码的不同部分。因此对于深度学习DL模型而言识别代码行级别的漏洞具有挑战性。图 1. 在这两个函数中CWE-787越界写入漏洞是由不恰当的数据类型赋值触发的。DeepVulMatch 的核心思想可以概括为一句话漏洞并不是孤立存在的标签而是一类可复用、可匹配的语义模式。为此论文不再直接预测“是否有漏洞”而是引入潜在漏洞表示并通过匹配机制判断代码是否与已知漏洞模式相似。整体流程可概括为三步① 漏洞表示学习从已知漏洞代码中学习通用的潜在漏洞向量表示。② 双粒度建模同时构建函数级与语句级代码表示。③ 相似度匹配通过表示匹配判断目标代码是否包含漏洞模式。图 2. DEEPVULMATCH的处理框架小结DeepVulMatch关注的不是“像不像漏洞代码”而是“是否匹配某类漏洞语义”。02—关键机制从分类到匹配将漏洞检测转化为漏洞语义匹配问题。潜在漏洞表示显式建模漏洞的可复用语义特征。双粒度检测统一支持函数级判断与语句级分析。更强泛化能力缓解对数据分布与项目背景的依赖。模块设计思路作用潜在漏洞表示从漏洞样本中学习抽象语义刻画漏洞共性特征函数级建模捕获整体逻辑与调用关系实现粗粒度漏洞检测语句级建模关注关键操作与局部语义实现细粒度定位匹配机制基于表示相似度进行判断提升泛化与跨项目能力小结匹配机制是 DeepVulMatch 区别于传统分类方法的关键。03—实验结果为了识别函数级和行级的漏洞实验选择了Big-Vul数据集和D2A数据集因为它们是两个最大的带有行级漏洞标签的漏洞数据集。1表1展示了DEEP-VULMATCH方法与其他12种基线方法在函数和行级方面的实验结果。DEEP-VULMATCH取得了82%的行级F1分数相较于最佳基线方法VELVET提高了32%。表1. 在BIG-VUL和D2A数据集上DEEPVULMATCH与12种基线方法的比较%2表2展示了DEEPVULMATCH方法与几种基线方法的训练时间。DEEPVULMATCH在保持与基于Transformer的模型相当的训练时间的同时在行级漏洞检测方面表现出显著的性能提升。表2. 训练DEEPVULMATCH和基线方法的训练时间小结DEEPVULMATCH从训练数据中收集漏洞模式并使用最优传输OT和向量量化VQ从模式集合中学习一个更紧凑的漏洞码本。在推理过程中码本会匹配所有学习到的模式并检测给定程序中的潜在漏洞。 总结DeepVulMatch 为漏洞检测提供了一种新的建模范式不再执着于标签预测而是让模型理解并复用漏洞语义。通过潜在漏洞表示与双粒度匹配机制该方法在检测性能、泛化能力与定位能力之间取得了更好的平衡也为后续漏洞模式迁移与解释性分析提供了良好基础。 欢迎留言讨论你认为“匹配式漏洞检测”是否比传统分类方法更具工程价值在真实漏洞库持续演化的场景下潜在漏洞表示应如何维护与更新 点赞 收藏 分享你的支持是我们持续解析高水平软件安全论文的最大动力