DCVD: Dual-Channel Cross-Modal Fusion for Joint Vulnerability Detection and Localization
DCVD 是一个统一框架,它利用具有显式多粒度监督的双通道跨模态融合,同时提升软件漏洞检测与精确语句级定位能力,其性能优于现有最先进方法。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象你是一家庞大而复杂的工厂(即软件)的安全检查员。你的工作分为两个方面:
- 全局视角:你需要观察一台特定的机器(一个函数),并判断“这台机器是否损坏或存在危险?”
- 细节审查:如果它确实损坏了,你需要准确指出导致问题的具体螺栓或电线(即代码行)。
长期以来,安全工具就像那些要么擅长观察整台机器却难以发现损坏的螺栓,要么擅长阅读手册(文本)却忽略蓝图(结构)的检查员。
本文介绍了DCVD,一种新的“超级检查员”,它通过同时使用两套视角并让它们相互沟通来解决这一问题。
旧检查员的问题
以往的工具通常仅依赖一种查看代码的方式:
- “单词阅读者”:这些工具像读故事一样逐词阅读代码。它们擅长理解含义,但常常忽略机器的“流程”(即一个部分如何触发另一个部分)。
- “蓝图阅读者”:这些工具查看结构和连接(如同接线图)。它们能看到各部分如何连接,但可能忽略机器的意图或其试图执行的具体含义。
- “猜测者”:一些试图兼顾两者的工具,往往只是基于对损坏机器的猜测来推断损坏的螺栓,而没有直接检查螺栓本身。
DCVD 的工作原理:双通道系统
DCVD 就像雇佣了两名专业检查员,他们并行工作,然后在做出最终决定前交换意见。
1. 双通道编码器(两套视角)
DCVD 不再仅仅提供单一视角,而是将代码分为两个流:
- 结构分支(蓝图专家):该分支使用一种特殊工具(图注意力网络)来查看代码的“骨架”。它描绘控制流——例如,开关如何点亮灯光,或循环如何重复任务。它专注于代码的连接和路径。
- 语义分支(翻译者):该分支使用强大的 AI(大型语言模型)来阅读代码,并用通俗的英语解释其功能。随后,它分析代码及其解释,以理解意图和逻辑。
类比:想象你要修理一辆汽车。结构分支是查看发动机接线图的机械师;语义分支是解释“当我踩油门时,汽车发出研磨声”的驾驶员。DCVD 会同时听取这两方面的信息。
2. 跨模态融合(对话)
如果两位专家不互相交流,仅有两位专家是不够的。如果蓝图专家说“电线连接在这里”,而翻译者说“驾驶员表示噪音发生在这里”,他们需要达成一致。
DCVD 使用跨模态融合模块,迫使这两种不同的视角相互对齐。
- 对比对齐:这就像一位老师确保蓝图专家和翻译者讨论的是同一辆汽车,而不是不同的汽车。它将他们的理解拉近。
- 双向交叉注意力:这是“深度对话”。蓝图专家问翻译者:“这根电线连接能否解释噪音?”翻译者则问蓝图专家:“这种噪音与这种布线是否吻合?”它们将各自的知识融合成对代码单一且超级的理解。
3. 多粒度监督器(双重检查)
最后,系统必须做出两个具体的预测,并且它被训练为同时完美地完成这两项任务:
- 函数级:“这台整台机器是否危险?”(是/否)
- 语句级:“哪一行是罪魁祸首?”(第 42 行、第 45 行等)
大多数旧工具在判定机器损坏后,将“哪一行?”部分视为一种幸运猜测。然而,DCVD 在行上设置了监督器。它明确训练系统去找到确切的损坏螺栓,而不仅仅是损坏的机器。它迫使系统直接学习细节,而不是寄希望于全局猜测是正确的。
结果
作者在包含真实世界软件漏洞的大型数据集(BigVul)上测试了这位“超级检查员”。
- 更优的检测:它比任何先前的工具更准确地发现了危险函数。
- 更优的定位:当它发现漏洞时,其定位具体代码行的精确度远超以往。
- “原因”:测试表明,如果移除“蓝图”视角、“翻译者”视角或“双重检查”训练中的任何一项,系统性能都会显著下降。这证明了结合结构、含义和显式训练是其中的秘诀。
简而言之,DCVD 是一个统一的系统,它不仅仅阅读代码或查看图表;它同时理解漏洞的流程、含义和确切位置,使其成为本文所述的最准确的自动化安全审计员。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。