“ 在真实软件系统中,漏洞往往并不对应单一语句或函数,而是隐藏在特定执行路径中:只有当程序沿着某条路径运行、特定条件被同时满足时,漏洞才会被触发。然而,现有漏洞检测方法仍停留在函数级或代码片段级建模,忽略了路径内部的控制流顺序、特征依赖与图结构信息,导致模型“知道哪里有风险”,却说不清“风险是如何发生的”。
针对这一问题,研究者提出了 FORTIFY ,一种面向路径级漏洞检测的表示与建模框架,显式融合特征导向表示与程序图拓扑结构,让模型能够真正理解漏洞的执行上下文。”
📄 论文标题:FORTIFY: Feature-Oriented Representation and Graph Topology Integration for Path-Level Vulnerability Detection
📅 发表时间:ACM Transactions on Architecture and Code Optimization, 2025
🏫 作者单位:大连海事大学、梅西大学
💡开源代码: https://github.com/ACoTAI/FORTIFY
01—方法介绍
FORTIFY的核心思想是:漏洞是“沿路径发生的行为”,而不是孤立代码位置的属性。为此,论文从“路径”和“结构”两个维度重构漏洞表示方式,整体流程可概括为三步:
① 路径级特征抽取
以执行路径为基本分析单元,提取语义、控制与数据相关特征。
② 特征导向表示学习
对不同类型特征进行针对性编码,避免信息混杂与语义稀释。
③ 图拓扑融合建模
将路径嵌入到程序图结构中,联合建模顺序关系与结构依赖。

图 1. FORTIFY整体流程
小结:FORTIFY 不再“看代码块”,而是“看代码是如何一步步执行到漏洞的。
02—关键机制
- 路径级漏洞检测视角,突破函数级、行级检测的表达上限。
- 特征导向表示设计,针对不同特征类型进行差异化建模。
- 图拓扑深度融合,显式利用程序结构约束路径语义。
- 更强可解释性,模型预测结果可回溯至具体执行路径。
| 模块 | 设计思路 | 作用 |
|---|---|---|
| 路径级建模 | 以执行路径作为最小分析单元 | 捕捉漏洞触发的完整上下文 |
| 特征导向表示 | 区分语法、语义、控制等特征 | 避免多源特征相互干扰 |
| 程序图拓扑 | 融合 CFG / 程序依赖结构 | 保留路径间的结构关联 |
| 路径级预测 | 深度学习分类模型 | 判断路径是否存在漏洞 |
小结:该框架的关键在于“路径 + 结构”的联合,而非二者割裂建模。
03—实验结果
为了评估FORTIFY的性能,实验使用了四个公开可用的漏洞数据集:SARD、NVD、FFmpeg和PX4无人机平台。这些数据集涵盖了广泛的C/C++漏洞类型,确保了多样性和代表性。主要实验结果如下。
(1)表1展示了FORTIFY和基线模型中不同模型的F1分数。为了验证FORTIFY在检测各种漏洞方面的能力,实验在19种CWE类型上将其性能与九个基线模型进行了比较。
表1. F1分数(↑)在漏洞类型和模型之间的比较

(2)表2报告了FORTIFY与基于Transformer和LLM的基线比较结果,实验在具有代表性的CWE类别上评估了最新的预训练模型。
表2. 在具有代表性的CWE类型中,与Transformer/LLM基线模型的F1分数对比

(3)图2展示了SCG、PDG和随机切片策略之间的路径覆盖对比。实验对FFgmep实例中的250个真实漏洞进行了敏感路径覆盖评估。SCG(绿色)保留了完整的攻击路径,如缓冲区溢出链,而PDG(橙色)则忽略了跨函数依赖关系。

图2. 典型漏洞的路径覆盖率对比
小结:FORTIFY是一个基于图的漏洞检测框架,它集成了程序依赖图(PDGs)、多类型边建模以及一种新颖的边-超图嵌入机制。针对19种CWE漏洞类型的实验评估表明,FORTIFY的F1分数达到了97.2%,并且在PX4等真实世界软件上保持了高准确性和鲁棒性。
📌 总结
FORTIFY从程序真实执行行为出发,重新定义了漏洞检测的建模粒度。通过将路径级语义与程序图拓扑深度融合,该方法让模型不再停留在“代码长什么样”,而是理解“漏洞是如何一步步被触发的”。
这一工作表明,未来漏洞检测的重要方向之一,或许正是从静态位置判断,走向执行语义理解。
📣 欢迎留言讨论
-
你认为路径级漏洞检测是否具备足够的工程可扩展性?
-
在大规模项目中,路径数量爆炸问题该如何权衡精度与效率?
📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!


1077

被折叠的 条评论
为什么被折叠?



