Keep It Simple:自适应代码图简化驱动的高精度漏洞检测框架
“近年来,基于图的漏洞检测方法(如 AST/CFG/PDG + GNN)在准确率上取得了显著进展,但也逐渐暴露出一个核心问题:代码图越来越复杂,但模型并没有因此变得更聪明。冗余节点、无关依赖与噪声边不仅增加计算成本,还会干扰关键信息传播,导致性能下降。
针对这一挑战,研究团队提出一种自适应代码图简化(Self-Adaptive Code Graph Simplification) 框架ANGEL,在不牺牲关键信息的前提下,自动压缩代码图结构,从而实现更准确、更高效的漏洞检测。”
📄论文标题:Keep It Simple: Self-Adaptive Code Graph Simplification for Accurate Vulnerability Detection
📅发表时间: IEEE Transactions on Software Engineering ,2025
🏫作者单位:国防科技大学、海南大学等
💡开源代码:https://github.com/XinPeng97/ANGEL
01
—
方法介绍
图1展示了基于图的尖端漏洞检测器AMPLE在三个数据集上不同节点数量分区下的准确率。以Reveal数据集为例,AMPLE在(0, 25]区间内达到92.25%的准确率,但当节点数超过100时其效能显著下降(例如节点数大于300时准确率仅为46.85%)。这些结果表明,随着代码图规模扩大,当前最先进的漏洞检测技术性能会急剧下降。
图 1.在Devign、Reveal和Big-Vul数据集上,不同节点数量下的准确率
ANGEL的核心思想可以概括为一句话:并非所有代码结构都同等重要,关键在于“保留什么、丢弃什么”。整体流程包括三步:
① 原始代码图构建:
从源代码中构建包含AST / CFG / PDG的联合程序图,完整表达语法、控制与数据依赖。
② 自适应图简化:
通过节点重要性评估与结构感知策略,动态裁剪冗余节点与弱相关边。
③ 简化图漏洞检测:
将压缩后的图输入 GNN 进行表示学习与漏洞分类。
图 2. ANGEL 框架
小结:ANGEL并不追求“更复杂的模型”,而是从输入结构本身入手,通过简化让模型专注于真正与漏洞相关的语义。
02
—
关键机制
- 自适应图简化机制,无需人工规则, 模型可自动学习哪些结构应被保留。
- 与模型无关,图简化模块可无缝集成至多种 GNN 漏洞检测模型。
- 噪声鲁棒性更强,显著降低无关代码结构对漏洞预测的干扰。
- 效率与精度双提升,在减少节点数量的同时提升检测效果。
模块 | 实现方式 | 主要作用 |
|---|---|---|
多视图程序图 | 融合 AST、CFG、PDG 构建统一代码图 | 全面表达程序结构与依赖关系 |
节点重要性评估 | 基于结构位置与语义特征的自适应打分 | 识别对漏洞判定更关键的节点 |
图结构简化策略 | 动态裁剪低重要性节点与弱边 | 降低噪声与计算复杂度 |
下游漏洞检测 | GNN + 分类器 | 在简化图上实现更稳定的漏洞预测 |
小结:ANGEL通过“先简化、再学习”的策略,有效缓解了代码图过密、过噪带来的性能瓶颈。
03
—
实验结果
研究团队在多个主流漏洞检测数据集上评估了ANGEL,包括:Devign、ReVeal和Big-Vul。与基线工作对比的结果如下:
表1. 不同软件漏洞检测方法的性能比较(F1指标)
模型 | Devign | ReVeal | Big-Vul |
|---|---|---|---|
VulDeePecker | 43.73 | 12.82 | 10.42 |
PILOT | 52.53 | 26.40 | 20.51 |
IVDetect | 47.30 | 20.10 | 16.53 |
MGVD | 51.75 | 27.76 | 20.34 |
AMPLE | 52.80 | 32.58 | 21.95 |
| KIS-GNN (本文) | 60.22 | 37.41 | 31.49 |
图3. 基于T-SNE算法的漏洞二分类结果可视化
小结: ANGEL展现出更优异的性能表现,在准确率(ACC)和F1分数方面均超越所有基线方法。相较于表现最佳的基线模型AMPLE,ANGEL在三个数据集上实现了F1分数14.0%-43.4%的提升。可视化分析进一步表明,ANGEL比基线方法更有效地捕捉了代码中的关键信息。
📌 总结
ANGEL提供了一种全新的视角:漏洞检测的关键不只是更复杂的模型,而是更干净、更聚焦的程序表示:减少无关结构噪声、提升 GNN 表达稳定性、增强工业级可扩展性。这一工作为未来的漏洞检测研究提供了重要启示:在模型能力趋于饱和的背景下,输入结构优化可能是下一个突破口。
📣 欢迎留言讨论
你认为代码图应该“越全越好”,还是“越精越好”?
在实际工业场景中,图简化是否会带来可解释性上的新优势?
📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!
