当前位置: 首页 > news >正文

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.846.750.2

小结: VulCNN 在 Recall 与 F1 上显著优于传统图模型与主流LLM 方法,在大规模漏洞检测任务中展现出更高的精度与可扩展性。

📌 总结

VulCNN通过多视图图构建与自适应融合,实现了从程序结构到语义空间的高效映射,显著提升了代码漏洞检测的准确率与可扩展性。其创新的中心性度量与视图融合机制,为多模态程序理解提供了新的范式。

📣 欢迎留言讨论

  • 你认为未来漏洞检测系统的核心突破点会在「结构增强」还是「大模型语义理解」?

  • 在企业场景中,多视图图模型如何与传统静态分析引擎协同工作?

📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!

http://www.jsqmd.com/news/736652/

相关文章:

  • AI Agent 面试题 300:如何处理Function Calling的返回值解析和错误处理?
  • WaveTools鸣潮工具箱:如何三步解锁120FPS高帧率游戏体验?
  • vscode配置代码片段用于辅助记忆API词语
  • YOLO11语义分割注意力机制改进:全网首发--使用MultiSEAM深度嵌入特征流强化多尺度有效区域响应(方案3)
  • AI Agent 面试题 500:如何实现Agent的自我反思触发条件优化?
  • Olimex ESP32-POE2开发板:25W PoE供电物联网方案解析
  • Qt C++ 的 科大讯飞政务语音系统
  • pkg/profile 与标准库对比:为什么它让Go性能分析如此简单
  • AI编程的“能力边界”在哪里?
  • Spacedrive终极故障排除指南:10个常见问题解决方案快速修复
  • 计算机保研全流程文书解决方案:King-of-Pigeon一站式服务
  • 040、探索本地模型:使用Ollama运行开源大模型驱动Agent
  • Wan2.2-I2V-A14B入门必看:WebUI界面功能详解与prompt输入技巧
  • 计算机毕业设计 | SpringBoot+vue农商对接系统 商品蔬菜购买平台(附源码+论文)
  • Rei Skills:883+AI技能库如何重塑开发工作流与效率
  • BullMQ:AI系统缺失的队列层
  • Anything to RealCharacters 2.5D转真人引擎部署教程:四重显存防爆优化详解
  • 写于“AI元人文”思想体系初步完成之际
  • glutin社区贡献指南:从问题报告到代码提交的完整流程
  • 【大数据存储与管理】NoSQL数据库:06 从NoSQL到NewSQL数据库
  • 开源社区自动化协作:基于事件驱动的GitHub机器人开发实践
  • Steam成就管理工具完整指南:3步轻松解锁游戏成就
  • Android开发工程师职位聚焦蓝牙技术开发指南
  • Windows 11安卓子系统深度解析:开发者实战指南与技术决策框架
  • 操作系统(四)
  • 《UNIX环境高级编程》读书笔记05: 文件和目录
  • nli-MiniLM2-L6-H768详细步骤:supervisor日志轮转配置防止/workspace日志爆满
  • ToastFish:如何在工作间隙悄无声息地提升英语词汇量?
  • 手机千问 文心 元宝 Kimi怎么导出pdf
  • 【金融级容器安全合规白皮书】:Docker 27等保2.0三级适配全栈落地指南(含央行《金融科技产品认证规则》映射表)