DGVD:融合序列与图结构的双图神经网络漏洞检测方法
“ 随着软件系统的复杂度不断提升,漏洞检测已成为保障软件安全的核心任务。传统静态检测依赖专家经验和规则匹配,面对未知或难以定义的漏洞往往力不从心。深度学习的引入为自动化漏洞检测提供了新可能,然而,序列化方法难以利用代码的结构信息,而图方法又缺乏有效的节点表示。本文提出的 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通过引入序列节点嵌入、双图神经网络与特征增强模块,实现了语义与结构的深度融合,在漏洞检测任务中取得了新的性能标杆。该方法为未来的大规模自动化漏洞检测提供了参考路径。
📣 欢迎留言讨论
-
你认为漏洞检测未来应更多依赖语义理解,还是结构化建模?
-
在工程实践中,深度学习能否真正取代传统静态分析?
📌 点赞 + 收藏 + 分享,是对我们持续更新最大的鼓励!
更多推荐


所有评论(0)