VulCNN:多视图图表征驱动的可扩展漏洞检测体系
“传统深度学习模型或仅关注语法序列,或局限于单一图结构,难以全面捕获程序的多维语义。为此,本文提出 VulCNN —— 一种基于多视图图表示的可扩展漏洞检测系统,通过从抽象语法树(AST)、控制流图(CFG)与程序依赖图(PDG)中提取多维特征,将源代码转化为多通道图像,实现结构与语义信息的深度融合。”
📄论文标题:A Scalable Vulnerability Detection System with Multi-View Graph Representations
📅发表时间:2025,ACM Transactions on Software Engineering and Methodology, https://github.com/Ablustrund/VulCNNPlus.
🏫作者单位:复旦大学、华中科技大学等
01
—
方法介绍
MVGVD 构建了一个多视图的代码图表示体系,通过抽象语法树(AST)、控制流图(CFG)与数据流图(DFG)三种图结构的互补性,捕获不同层次的语义关系。具体而言:
从源代码中构建三类图:AST、CFG 与 PDG,分别描述语法结构、控制流与数据流。
在每个图上进行中心性分析(包括Degree、Closeness、Betweenness、Eigenvector、Harmonic、Katz 六种),提取不同层次的结构重要性。
将各中心性度量视为图像的不同通道,形成多视图输入,用 CNN 捕获空间结构特征。
通过自适应重加权层(Adaptive Re-weighting Layer),自动学习三类视图的重要性分布,融合为统一表示进行漏洞分类。
图 1. 将函数转换为多视图图像示例
小结:MVGVD从单一图结构扩展到多视角结构学习,使模型在保持可扩展性的同时具备更强的语义覆盖与泛化能力。
02
—
关键机制
机制 | 实现方式 | 主要作用 |
|---|---|---|
多视图图建模 | 构建 AST / CFG / PDG 三类函数图 | 捕获语法、控制与数据依赖 |
中心性分析 | Degree、Closeness、Betweenness、Eigenvector、Harmonic、Katz | 量化节点重要性,生成多通道图像 |
特征提取 | 10组卷积核的 CNN 提取结构特征(共享参数) | 捕获跨视图的模式表示 |
自适应重加权层 | Softmax 权重融合多视图嵌入 | 自动调节不同图视角的贡献 |
小结:VulCNN通过中心性驱动的多视图表示和可学习融合策略,使模型既能保持结构细粒度,又具备语义全局性。
03
—
实验结果
实验在三个公开数据集上进行:Devign、Big-Vul、Reveal。下表摘自论文主要实验结果(F1 值单位:%)。
模型 | Devign | Big-Vul | ReVeal |
|---|---|---|---|
TokenCNN | 48.6 | 34.0 | 23.2 |
VulDeePecker | 47.1 | 36.5 | 36.8 |
Devign | 58.2 | 45.7 | 48.9 |
VulCNN (Old) | 61.1 | 44.0 | 44.8 |
UniXcoder | 59.3 | 42.9 | 50.0 |
DeepSeek-Coder | 60.7 | 43.3 | 47.4 |
Grace | 63.3 | 46.2 | 49.2 |
| VulCNN (本文) | 63.8 | 46.7 | 50.2 |
小结: VulCNN 在 Recall 与 F1 上显著优于传统图模型与主流LLM 方法,在大规模漏洞检测任务中展现出更高的精度与可扩展性。
📌 总结
VulCNN通过多视图图构建与自适应融合,实现了从程序结构到语义空间的高效映射,显著提升了代码漏洞检测的准确率与可扩展性。其创新的中心性度量与视图融合机制,为多模态程序理解提供了新的范式。
📣 欢迎留言讨论
你认为未来漏洞检测系统的核心突破点会在「结构增强」还是「大模型语义理解」?
在企业场景中,多视图图模型如何与传统静态分析引擎协同工作?
📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!
