随着软件系统的复杂度不断提升,漏洞检测已成为保障软件安全的核心任务。传统静态检测依赖专家经验和规则匹配,面对未知或难以定义的漏洞往往力不从心。深度学习的引入为自动化漏洞检测提供了新可能,然而,序列化方法难以利用代码的结构信息,而图方法又缺乏有效的节点表示。本文提出的 DGVD (Dual Graph Neural Networks for Vulnerability Detection),试图弥合这两类方法的缺陷。

论文标题:A dual graph neural networks model using sequence embedding as graph nodes for vulnerability detection
作者:Miaogui Ling, Mingwei Tang*, Deng Bian 等
单位:西华大学计算机与软件工程学院,中国成都
发表期刊:Information and Software Technology, Vol. 177, 2025, Elsevier 出版
通讯作者:Mingwei Tang (tang4415@126.com)

01

方法介绍

DGVD将函数级漏洞检测建模为一个二分类问题,以代码的控制流图 (CFG) 为输入。其关键在于引入序列节点嵌入:通过预训练模型 CodeBERT与BiLSTM,将语义丰富的语句表示作为图节点,从而兼顾了语义与结构信息。

图片

图1.  DGVD的架构包含三个主要部分:(A)源代码预处理(B)基于序列的节点嵌入(C)双图神经学习网络。

小结:DGVD 首次系统性地将序列特征作为图节点信息嵌入,突破了图模型缺乏语义表达的瓶颈。

02

核心机制

DGVD 的核心机制包括以下几点:

特点

描述

DualGNN 模块

同时结合 GCN与 GAT,既捕获控制流全局结构信息,又关注节点间关系。

序列节点嵌入

利用CodeBERT预训练权重+ BiLSTM,对语句进行向量化,获得更细粒度的语义表达。

特征增强模块 (TC-FE)

多尺度卷积提取不同层级特征,提升模型对局部与全局模式的鲁棒性。

全局注意力汇聚

基于 bisimulation attention 的全局池化,将关键节点信息融合为图表示。

    小结:DualGNN 与 TC-FE 的设计,使得 DGVD 在语义—结构的双重建模上具备更强表达力。

    03

    实验结果

    研究团队在 CodeXGLUE 数据集(FFmpeg & QEMU,27k 样本)上进行了系统评估。对比了包括CodeBERT、GraphCodeBERT、CodeT5、Devign、ReGVD、Reveal 及最新 PU-learning 模型 PILOT 在内的 12 种方法。

    模型

    Accuracy

    Precision

    Recall

    F1

    CodeBERT

    63.36

    65.49

    42.79

    51.76

    GraphCodeBERT

    62.81

    61.75

    50.03

    55.28

    Devign

    58.50

    55.32

    55.78

    54.34

    PILOT

    63.31

    57.95

    65.18 61.21
    DGVD (本文) 64.23 61.45

    59.33

    60.37

    小结:DGVD 在 Accuracy 和 Precision 上取得最佳表现,在 Recall 与 F1上与最优方法接近,综合性能稳居第一,验证了语义与结构结合的优势。

    📌 总结

    DGVD通过引入序列节点嵌入、双图神经网络与特征增强模块,实现了语义与结构的深度融合,在漏洞检测任务中取得了新的性能标杆。该方法为未来的大规模自动化漏洞检测提供了参考路径。

    📣 欢迎留言讨论

    • 你认为漏洞检测未来应更多依赖语义理解,还是结构化建模?

    • 在工程实践中,深度学习能否真正取代传统静态分析?

    📌 点赞 + 收藏 + 分享,是对我们持续更新最大的鼓励!
    Logo

    欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

    更多推荐