Abstract:
内存相关漏洞对现代软件的安全构成了严重威胁。 尽管基于深度学习的方法在一般性漏洞检测方面取得了成功,但在应用于内存相关漏洞检测时,仍然受到流信息利用不足的限制,导致高误报率。 本文提出了一种基于流敏感图神经网络(FS-GNN)的语句级内存相关漏洞检测方法MVD。 利用FS-GNN联合嵌入非结构化信息(即源代码)和结构化信息(即控制流和数据流)来捕获隐式内存相关漏洞模式。 我们在包含4353个真实世界内存相关漏洞的数据集上评估MVD,并将我们的方法与三种最先进的基于深度学习的方法以及五种流行的基于静态分析的内存检测器进行比较。 实验结果表明,MVD具有较好的检测精度,优于基于状态DL和基于静态分析的检测方法。 此外,MVD在准确性和效率之间做出了很大的权衡。
Motibation:
内存相关漏洞会导致性能下降和程序崩溃,严重威胁到现代软件的安全性。
静态分析方法使用一些预定义的漏洞规则或模式来搜索不正确的内存操作,然而,定义良好的漏洞规则或模式高度依赖于专家知识,因此很难涵盖所有情况。并且大规模软件的复杂编程逻辑使得手工提取规则的难度大大提升。所以静态分析方法很难应用。
基于深度学习(DL)的方法可以自动地从先前的易受攻击代码中提取隐含的漏洞模式,而不需要专家的参与,但现有的的DL-based方法也存在着流信息利用不足和粒度粗的局限。
Challenge:
- 流信息利用不足:
- 缺乏过程间分析:现有方法以函数级漏洞代码为输入,忽略了函数间的调用关系,对特征提取进行过程中分析。然而实际的程序中,调用用户定义的函数来实现内存分配或释放的操作是普遍存在的。 缺少过程间分析可能导致语义建模不完整,导致查全率和查准率较低;
- 模型训练中部分流信息丢失:BILSTM、GGNN和GCN等模型处理多重关系的能力的限制,在模型训练过程中会丢失部分流信息。
- 粒度粗:
现有方法检测粒度多在代码级或程序切片级,开发人员仍然需要花费大量时间手工缩小可疑语句(或操作)的范围。由于各种漏洞之间的巨大差异,现有的基于DL的通用漏洞检测方法必须牺牲特定漏洞特有的语义特征,以保证训练的模型能够覆盖大多数漏洞的通用特征。( 与其他漏洞相比,内存相关漏洞通常只需一行或几行代码即可修复,这使得细粒度检测成为可能。)
Contribution:
- 提出了一种新的流敏感图神经网络(FS-GNN,联合嵌入语句和流信息,从漏洞代码中捕获程序语义)来支持内存相关漏洞的有效检测;
(为了获取更全面和精确的程序语义,MVD将程序依赖图(PDG)和调用图(CG)相结合,以获取过程间的控制和数据流信息。通过使用CG扩展PDG并添加额外的语义信息(包括函数之间的调用关系和返回值)来进行过程间分析。代码段和关系(即边)被嵌入到紧凑的低维表示中,以保留非结构化(即源代码)和结构化(即控制流和数据流)信息。)
- 将漏洞检测形式化为细粒度的节点分类问题,以识别可疑的漏洞语句;
(将易受攻击语句的检测形式化为一个节点分类问题)
- 验证。
Methodology:
MVD分为两个阶段,训练阶段和检测阶段。
训练阶段分为三步:
1. 基于数据流和控制流建立程序依赖图(PDG);
为了获取全面而精确的程序语义,MVD扩展了PDG,增加了诸如调用关系和从调用图(CG)中获得的返回值之类的语义信息,以进行过程间分析;为了减少无关语义噪声,MVD从感兴趣的程序点进行节目切片。
2. 用DOC2VEC将每个切片的语句转换为低维向量表示;
3. 使用流敏感图神经网络(FS-GNN)联合嵌入节点和关系,学习隐含的漏洞模式,重新平衡节点标记分布。
最后,构造了一个训练良好的模型,用于语句级的内存相关漏洞检测。
检测阶段:
通过过程间分析,首先提取目标程序的控制和数据依赖性进行程序切片,以捕获与存储器使用有关的精确程序语义。 然后,对于每个切片,以它的非结构化(即doc2vec的语句嵌入)和结构化(控制流数据流)信息为输入使用DL模型进行漏洞检测。
特征提取:
使用静态分析工具Joern[1]解析源代码,构造程序依赖图(PDG)。然后,通过调用关系和调用图(CG)返回值等语义信息对PDG进行扩展,进行过程间分析,保留了完整的控制数据流信息。
为了提高识别关键特征的性能,MVD不以整个程序为输入,而是以c前后范围做切片为输入。
关注的程序点:
1. system API call (滥用System Apicalls是造成漏洞的主要原因之一,包括与内存相关的漏洞。) 2. pointer variable(指针变量)
图三为一个示例,节点5为关注的程序点,因为节点6不依赖于节点5的数据,所以它被移除。
节点嵌入:
略。
图学习:
Graph Embedding:利用知识图嵌入方法[2]中使用的实体-关系复合操作
标签:语句,检测,ICSE,漏洞,MVD,内存,2022,节点 From: https://www.cnblogs.com/Liuyaaa/p/17091194.html