当前位置: 首页 > 专利查询>扬州大学专利>正文

基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质技术方案

技术编号:24497495 阅读:56 留言:0更新日期:2020-06-13 03:37
本发明专利技术公开了一种基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质,方法包括:构建漏洞数据集;将漏洞数据集划分为训练集和测试集;漏洞文件代码图表示;漏洞特征提取;构建预测器,并利用该预测器预测代码文件中的漏洞。系统用于实现上述方法过程,计算机设备和存储介质通过执行计算机程序能够实现上述方法过程。本发明专利技术可以更好地利用漏洞代码的语法、语义信息,充分挖掘漏洞代码与上下文的关系,并有效的识别一类漏洞,普适性和通用性更强,可以取代实际代码审计中人工制定漏洞指标的环节,使实际使用成本更低、应用领域更广、精度更高。

Vulnerability identification and prediction method, system, computer equipment and storage medium based on graph neural network

【技术实现步骤摘要】
基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质
本专利技术属于软件工程领域,特别涉及一种基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质。
技术介绍
漏洞识别与预测是软件维护过程中的重要组成部分。近年来,随着软件项目的规模扩张和复杂度提升,在软件开发过程中出现了大量的漏洞,如何准确高效地识别并预测漏洞已成为具有相当挑战性的工作。而在之前的工作中多采用由人类专家手工制定的特征或模式被机器学习算法作为输入来检测漏洞,然而由专家手工定义一些漏洞度量(如代码大小,圈复杂度等),成本过高且主观性较强,会导致较高的误报率和漏报率。已有的漏洞识别与预测工作大多都是面向静态分析场景的研究,没有考虑自身的语义特征。同时机器学习与深度学习发展迅速,许多模型都能为漏洞识别提供参考,但是种类繁多,没有统一高效的识别与预测模型,为进一步漏洞的修复造成了一定困难。此外,目前已有一些工作使用机器学习的方法来识别软件漏洞的语法特征并进行漏洞的预测。如文献《Tofearornottofearthatisthequestion:codecharacteristicsofavulnerablefunctionwithanexistingexploit》中通过八个代码度量指标描述来自Linux内核和ApacheHTTP服务器中的漏洞,通过机器学习的方法预测漏洞的可利用性,但还是停留在手工定义漏洞特征的层面。也有一些工作通过将图引入代码表示来以更细的粒度(函数级)来分析漏洞代码,如文献《Vulnerabilityextrapolation:assisteddiscoveryofvulnerabilitiesusingmachinelearning》中通过融合抽象语法树、控制流图以及程序依赖图形成代码属性图来表示源代码,但没有提出完整的识别预测模型。
技术实现思路
本专利技术的目的在于提供一种具有成本低、准确性高、应用范围广等特点的漏洞识别与预测方法、系统、计算机设备和存储介质。实现本专利技术目的的技术解决方案为:一种基于图神经网络的漏洞识别与预测方法,包括以下步骤:步骤1,构建漏洞数据集;步骤2,将漏洞数据集划分为训练集和测试集;步骤3,漏洞文件代码图表示;步骤4,漏洞特征提取;步骤5,构建预测器,并利用该预测器预测代码文件中的漏洞。进一步地,步骤1所述构建漏洞数据集,具体过程包括:步骤1-1,采集漏洞数据库NVD中的数据,包括漏洞报告;步骤1-2,提取漏洞报告中的CWE漏洞类型标签、描述信息以及漏洞文件;步骤1-3,利用一组与软件安全性相关的漏洞发生特征关键词和所述描述信息进行匹配,筛选出安全性漏洞,由所有安全性漏洞构成漏洞数据集。进一步地,步骤2所述将漏洞数据集划分为训练集和测试集,具体包括:步骤2-1,对CWE漏洞类型标签进行归并,获得漏洞类型表如下表1所示:表1漏洞类型表步骤2-2,从漏洞数据集中随机选取部分状态为Modified的漏洞报告,结合CWE漏洞类型标签和上述表1对选取的漏洞报告进行分类,构建语料库,并将语料库中的一部分漏洞报告作为训练集,其余漏洞报告作为测试集。进一步地,步骤3所述漏洞文件代码图表示,具体过程包括:步骤3-1,将所述漏洞数据集中的每个漏洞文件分解为一组方法即函数;特殊地,头文件也视为一组方法;步骤3-2,利用GumTree对每个漏洞文件对应的一组方法进行语法分析,获得一组语法抽象树AST;步骤3-3,利用word2vec对语法抽象树AST中的代码单词codetokens进行词向量学习,获得一组词向量;由上述过程将每一个漏洞文件表示为一个代码属性图gi(V,X,A),该图中结点的代码属性由词向量表示,边属性的类型为AST;其中V表示结点集合,X表示初始结点的特征矩阵,A表示两结点是否通过一条AST边相连,0表示两结点不相连,1表示相连,A为一个m×m的邻接矩阵,m为结点总数。进一步地,步骤4所述漏洞特征提取,具体为:结合门控图神经网络GGNN的特征学习和门控递归单元实现漏洞特征提取;具体过程包括:步骤4-1,初始化结点集合V中每个结点vj的状态向量hj(1);步骤4-2,将每个结点向量作为门控图神经网络GGNN的输入端,假设邻居结点特征聚合的时间步总数即迭代次数阈值为T',获取第j个结点在时间步t即第t次迭代时的信息量其中,t≤T',hj(t-1)表示在t-1次迭代时的结点j的状态向量,W为权重矩阵,b为偏差,T表示矩阵或向量转置,j=1,2,…,m;步骤4-3,根据信息量构建重置门rj和更新门zj为:式中,σ(·)表示Sigmoid激活函数,Wz、Uz为更新门zj的权重矩阵,Wr、Ur为重置门rj的权重矩阵;步骤4-4,基于重置门rj判断前一时间步t-1的结点状态即隐藏状态是否需要保留,具体过程包括:对当前时间步t的重置门的输出与前一时间步t-1的隐藏状态做乘法运算,即:若重置门中的元素值与0值的绝对差值小于预设阈值,则表明前一时间步t-1的隐藏状态元素为0,即丢弃前一时间步t-1的隐藏状态;反之,表示保留前一时间步t-1的隐藏状态;步骤4-5,利用含激活函数tanh的全连接层求取当前时间步t的候选隐藏状态式中,W和U为权重矩阵;步骤4-6,基于当前时间步t的更新门和当前时间步t的候选隐藏状态求取当前时间步t的隐藏状态在T'个时间步内迭代上述步骤4-2至步骤4-6,最后一次迭代后的状态向量表示所有结点的最终结点表示矩阵,即漏洞特征:进一步地,步骤4-1所述初始化结点集合V中每个结点vj的状态向量hj(1),具体过程包括:针对每个结点vj,将其第一维用xj表示,其余维填充为0,由此初始化结点vj的状态向量为hj(1)∈Rz,z≥d,其中xj表示对应的结点vj的d维词向量,z表示结点的维数。进一步地,步骤5所述构建预测器,并利用该预测器预测代码文件中的漏洞,具体包括:步骤5-1,将漏洞特征作为预测器的输入端,构建预测器为:步骤5-2,采用交叉熵作为代价函数,通过最小化代价函数获得最优预测函数f:式中,L(·)表示交叉熵代价函数,ci表示第i个输入的代码文件,yi表示输出,输出结果为0表示输入的代码文件无模型训练的漏洞,输出结果为1表示输入的代码文件存在模型训练的漏洞。一种基于图神经网络的漏洞识别与预测系统,所述系统包括:第一构建模块,用于构建漏洞数据集;划分模块,用于将漏洞数据集划分为训练集和测试集;图表示模块,用于实现漏洞文件代码图表示;提取模块,用于实现漏洞特征提取;第二构建模块,用于构建预测器,并利用该预测器预测代码文件中的漏洞。一种计算机设备,包括存储器、处本文档来自技高网
...

【技术保护点】
1.一种基于图神经网络的漏洞识别与预测方法,其特征在于,包括以下步骤:/n步骤1,构建漏洞数据集;/n步骤2,将漏洞数据集划分为训练集和测试集;/n步骤3,漏洞文件代码图表示;/n步骤4,漏洞特征提取;/n步骤5,构建预测器,并利用该预测器预测代码文件中的漏洞。/n

【技术特征摘要】
1.一种基于图神经网络的漏洞识别与预测方法,其特征在于,包括以下步骤:
步骤1,构建漏洞数据集;
步骤2,将漏洞数据集划分为训练集和测试集;
步骤3,漏洞文件代码图表示;
步骤4,漏洞特征提取;
步骤5,构建预测器,并利用该预测器预测代码文件中的漏洞。


2.根据权利要求1所述的基于图神经网络的漏洞识别与预测方法,其特征在于,步骤1所述构建漏洞数据集,具体过程包括:
步骤1-1,采集漏洞数据库NVD中的数据,包括漏洞报告;
步骤1-2,提取漏洞报告中的CWE漏洞类型标签、描述信息以及漏洞文件;
步骤1-3,利用一组与软件安全性相关的漏洞发生特征关键词和所述描述信息进行匹配,筛选出安全性漏洞,由所有安全性漏洞构成漏洞数据集。


3.根据权利要求1或2所述的基于图神经网络的漏洞识别与预测方法,其特征在于,步骤2所述将漏洞数据集划分为训练集和测试集,具体包括:
步骤2-1,对CWE漏洞类型标签进行归并,获得漏洞类型表如下表1所示:
表1漏洞类型表



步骤2-2,从漏洞数据集中随机选取部分状态为Modified的漏洞报告,结合CWE漏洞类型标签和上述表1对选取的漏洞报告进行分类,构建语料库,并将语料库中的一部分漏洞报告作为训练集,其余漏洞报告作为测试集。


4.根据权利要求3所述的基于图神经网络的漏洞识别与预测方法,其特征在于,步骤3所述漏洞文件代码图表示,具体过程包括:
步骤3-1,将所述漏洞数据集中的每个漏洞文件分解为一组方法即函数;特殊地,头文件也视为一组方法;
步骤3-2,利用GumTree对每个漏洞文件对应的一组方法进行语法分析,获得一组语法抽象树AST;
步骤3-3,利用word2vec对语法抽象树AST中的代码单词codetokens进行词向量学习,获得一组词向量;
由上述过程将每一个漏洞文件表示为一个代码属性图gi(V,X,A),该图中结点的代码属性由词向量表示,边属性的类型为AST;其中V表示结点集合,X表示初始结点的特征矩阵,A表示两结点是否通过一条AST边相连,0表示两结点不相连,1表示相连,A为一个m×m的邻接矩阵,m为结点总数。


5.根据权利要求4所述的基于图神经网络的漏洞识别与预测方法,其特征在于,步骤4所述漏洞特征提取,具体为:结合门控图神经网络GGNN的特征学习和门控递归单元实现漏洞特征提取;具体过程包括:
步骤4-1,初始化结点集合V中每个结点vj的状态向量hj(1);
步骤4-2,将每个结点向量作为门控图神经网络GGNN的输入端,假设邻居结点特征聚合的时间步总数即迭代次数阈值为T',获取第j个结点在时间步t即第t次迭代时的信息量



其中,t≤T',hj(t-1)表示在t-1次迭代时的结点j的状态向量,W为权重矩阵,b为偏差,T表示矩阵或向量转置,j=1,2,…,m;
步骤4-3,根据信息量构建重置...

【专利技术属性】
技术研发人员:孙小兵曹思聪李斌
申请(专利权)人:扬州大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1