CN114611115A - 一种基于混合图神经网络的软件源码漏洞检测方法 - Google Patents

一种基于混合图神经网络的软件源码漏洞检测方法 Download PDF

Info

Publication number
CN114611115A
CN114611115A CN202210274334.2A CN202210274334A CN114611115A CN 114611115 A CN114611115 A CN 114611115A CN 202210274334 A CN202210274334 A CN 202210274334A CN 114611115 A CN114611115 A CN 114611115A
Authority
CN
China
Prior art keywords
graph
information
node
source code
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210274334.2A
Other languages
English (en)
Inventor
段立娟
徐泽鑫
陈军成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Technology
Original Assignee
Beijing University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN202210274334.2A priority Critical patent/CN114611115A/zh
Publication of CN114611115A publication Critical patent/CN114611115A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及一种基于混合图神经网络的软件源码漏洞检测方法,用于解决在软件源码处理过程中源码内部结构与语义信息丢失,漏洞检测效果差的问题,包括:将源码文件采用信息增强后的代码属性图表示,将信息增强后的代码属性图向量化后输入图卷积神经网络中得到局部特征矩阵;输入门控图神经网络中得到全局特征矩阵。将局部特征矩阵和全局特征矩阵拼接后输入分类器,最后输出检测结果。采用本方法能够有效保留源码内部的结构和语义信息,模型训练采用焦点损失函数在损失计算时赋予正负样本不同大小的权重,避免模型过度拟合样本更多的非漏洞类别,提升了模型的漏洞检测效果。

Description

一种基于混合图神经网络的软件源码漏洞检测方法
技术领域
本发明涉及软件漏洞检测技术领域,尤其涉及一种基于混合图神经网络的软件源码漏洞检测方法。
背景技术
随着信息技术的飞速发展,应用软件在世界各地的经济、军事、社会等各个方面都发挥着重要的作用,而应用软件中的漏洞对软件系统的运行安全构成巨大威胁,一旦软件安全遭到破坏,会给个人、企业甚至国家带来巨大的危害和损失。研究出一种有效的软件源码漏洞检测方法具有重要的意义,能够尽可能快地检测出软件源码中潜在的漏洞以便技术人员及时进行修补,尽可能减少软件漏洞带来的损失。
随着深度学习的不断发展,越来越多的研究人员将深度学习的方法应用到软件漏洞检测技术领域,使用卷积神经网络(CNN)和循环神经网络(RNN)提取软件源码特征并输入分类器中最后输出检测结果。这类基于序列的方法使用类似于处理自然语言的方法对软件源码进行处理,将软件源码转化为扁平的序列。但是,软件源码实际上比自然语言具有更强的结构性和逻辑性。在软件源码建模过程中丢失了内部的结构信息、语义信息这些对于识别软件源码漏洞至关重要的关键信息,限制了模型检测和覆盖各类漏洞的能力。
实际应用中非漏洞样本与漏洞样本比例达40:1以上,存在严重的正负样本不平衡问题,模型训练后更倾向于样本多的无漏洞类别。现有的技术大多使用交叉熵损失函数,假定漏洞样本与非漏洞样本比例为1:1,无法有效解决样本不平衡问题。因此,需要采用更有效的损失函数,使模型能够更好地学习漏洞样本特征,提升模型检测软件源码漏洞的能力。
发明内容
根据现有技术存在的上述问题,本发明提出了一种基于混合图神经网络的软件源码漏洞检测方法。使用图卷积神经网络GCN提取软件源码文件的局部特征,使用门控图神经网络GGNN提取软件源码文件的全局特征,再将局部特征和全局特征拼接后输入分类器中,最后输出检测结果。采用焦点损失函数(Focal Loss)在损失计算时赋予正负样本不同大小的权重,避免模型训练过程中过度拟合样本更多的非漏洞类别,提升模型的漏洞检测能力。
为实现上述目的,本发明提供了一种基于混合图神经网络的软件源码漏洞检测方法,包括以下:
一种基于混合图神经网络的软件源码漏洞检测方法,包括以下步骤:
步骤A:获得待检测源码文件的代码属性图,将源码文件的编码顺序信息加入代码属性图中得到信息增强后的代码属性图,图中的节点对应源码文件中的一个或多个关键词。
步骤B:将信息增强后的代码属性图向量化后得到源码表征G,向量化包括图中节点的向量化和节点间连接边的向量化。
步骤C:将源码表征G输入图卷积神经网络GCN中得到局部特征矩阵Hl;将源码表征G输入门控图神经网络GGNN中得到全局特征矩阵Hg
步骤D:将局部特征矩阵Hl和全局特征矩阵Hg拼接后输入分类器,最后输出检测结果。
步骤A中所述的信息增强后的代码属性图具体为:
将源码文件的编码顺序信息加入代码属性图中,将图中存在编码顺序关系的节点使用编码顺序信息边Escs进行连接,得到信息增强后的代码属性图,信息增强后的代码属性图如图3所示,图中信息增强后的代码属性图中边的类型有:抽象语法信息边East、控制流信息边Ecfg、数据流信息边Edfg、编码顺序信息边Escs,所述的抽象语法信息边East指关键词间的语法关系与结构关系;控制流信息边Ecfg指程序执行期间可能遍历的所有路径,路径的选择由条件语句决定;数据流信息边Edfg指每个关键词的使用情况,包括关键词的访问、修改;编码顺序信息边Escs指源代码中关键词的自然顺序。
步骤B中所述的节点的向量化具体为:
对信息增强后的代码属性图中的节点进行向量化,节点对应源码文件中的关键词,使用所有关键词的集合作为语料库预先训练词嵌入模型Word2Vec,再使用预先训练好的词嵌入模型Word2Vec将关键词转化为d维的数值向量v,得到图节点矩阵V,V∈Rm×d,其中m为图中节点总数,d为每个节点对应的数值向量的维度;
步骤B中所述的节点间连接边的向量化具体为:
对信息增强后的代码属性图中节点间的边进行向量化,增强后的代码属性图中各节点间的边由邻接矩阵A表示,A∈{0,1}k×m×m,m是节点的总数,k是边类型的总数,k=4,四种类型的边分别是:抽象语法信息边East、控制流信息边Ecfg、数据流信息边Edfg、编码顺序信息边Escs,其中,
Figure BDA0003553824520000031
是邻接矩阵A中的一个元素
Figure BDA0003553824520000032
Figure BDA0003553824520000033
等于1时表示序号为i的节点vi和序号为j的节点vj间存在p类型的边,
Figure BDA0003553824520000034
等于0时表示序号为i的节点vi和序号为j的节点vj间不存在p类型的边;
最终,信息增强后的代码属性图可以表示为G=(V,A),其中V为图节点特征矩阵,A为图的邻接矩阵。
所述步骤C具体为:
步骤C-1:源码表征G输入图卷积神经网络GCN得到局部特征矩阵Hl,其中,图卷积神经网络依次由第一图卷积层GraphConv1和第二图卷积层GraphConv2组成,通过第一图卷积层GraphConv1聚合源码表征G中每一个节点及其邻接节点的信息实现对信息增强后的代码属性图中每一个节点的特征向量进行更新,接着经过第二图卷积层GraphConv2再次聚合每一个节点及其邻接节点的信息对每一个节点的特征向量进行再次更新得到局部特征矩阵Hl,公式表示如下:
Hl=GraphConv2(GraphConv1(G)) (1)
步骤C-2:假设源码表征G输入门控图神经网络GGNN经过T时刻后得到全局特征矩阵Hg,在每个时刻t(t≤T),信息增强后的代码属性图中各节点接收相邻节点的信息,同时向相邻节点发送信息,通过聚合t-1时刻所有与节点vi以p类型的边相连的相邻节点的信息得到节点vi的更新状态向量
Figure BDA0003553824520000035
更新公式具体如下:
Figure BDA0003553824520000036
其中,
Figure BDA0003553824520000037
是A中p类型的边对应的邻接矩阵Ap的转置,Wp是权重矩阵,b是偏置项,
Figure BDA0003553824520000041
是t-1时刻序号为1、…、m的节点的隐藏状态向量的转置。
步骤C-3:累加t-1时刻节点vi通过k种不同类型的边进行信息更新后得到的更新状态向量,再利用门控循环单元GRU结合t-1时刻节点vi的隐藏状态向量
Figure BDA0003553824520000042
得到当前t时刻节点vi的隐藏状态向量
Figure BDA0003553824520000043
具体表示如下:
Figure BDA0003553824520000044
其中,
Figure BDA0003553824520000045
表示t时刻节点vi的隐藏状态向量,GRU表示门控循环单元,SUM表示累加函数;
T时刻将顶点集V中所有节点的隐藏状态向量拼接得到全局特征矩阵Hg,公式如下:
Figure BDA0003553824520000046
其中,m为顶点集V中的节点总数,
Figure BDA0003553824520000047
为T时刻节点vi的隐藏状态向量。
所述分类器依次由第一一维卷积层、第一一维全局池化层、第二一维卷积层、第二一维全局池化层、全连接层和激活函数Sigmoid组成。
训练过程中采用焦点损失函数Focal Loss在损失计算时根据正负样本比例赋予正负样本不同大小的权重。
有益效果
本发明提出了一种基于混合图神经网络的软件源码漏洞检测方法,与现有技术相比,具有以下优势和有益效果:
本方法结合增强的代码属性图对源码文件进行表征,能够有效保留源码内部的结构和语义信息;使用图卷积神经网络GCN提取软件源码文件的局部特征,使用门控图神经网络GGNN提取软件源码文件的全局特征,能够更好地挖掘出源码漏洞特征;采用焦点损失函数(Focal Loss)在损失计算时赋予正负样本不同大小的权重,避免模型训练过程中过度拟合样本更多的非漏洞类别,提升了模型的软件源码漏洞检测能力。
附图说明
图1、模型整体框架;
图2源码文件示例;
图3信息增强后的代码属性图示例。
具体实施方式
步骤A:对于一个待检测的源码文件,待检测源码文件如图2所示。使用Joern工具得到该文件的代码属性图,代码属性图包括关键词和关键词的组合,将源码文件的编码顺序信息加入代码属性图中得到信息增强后的代码属性图,如图3所示,图中的节点对应代码属性图中的关键词或关键词的组合,例如图中有的节点对应一个关键词“x”,有的节点对应关键词的组合“x”、“=”、“1”(x=1)。
具体的,将源码文件的编码顺序信息加入代码属性图中,将图中存在编码顺序关系的节点使用编码顺序信息边Escs进行连接,得到信息增强后的代码属性图。信息增强后的代码属性图中边的类型有:抽象语法信息边East、控制流信息边Ecfg、数据流信息边Edfg、编码顺序信息边Escs。所述的抽象语法信息边East指关键词间的语法关系与结构关系;控制流信息边Ecfg指程序执行期间可能遍历的所有路径,路径的选择由条件语句决定;数据流信息边Edfg指每个关键词的使用情况,包括关键词的访问、修改;编码顺序信息边Escs指源代码中关键词的自然顺序。例如,图中关键词“int y”对应的节点与关键词“y”对应的节点之间存在语法关系,因此它们之间存在抽象语法信息边East;程序的执行路径是先执行“if(y>0)”再执行“x=x+y”因此“if(y>0)”对应的节点与“x=x+y”对应的节点之间存在控制流信息边Ecfg;当程序执行到“int x=1”时关键词“x”被修改为1,程序执行到“x=x+y”时关键词“x”被修改为x+y,关键词“x”的使用情况使用“x=1”对应的节点与“x=x+y”对应的节点之间的数据流信息边Edfg表示;源代码关键词的自然顺序中关键词“int”在关键词“y”之前,因此关键词“int”对应的节点和关键词“y”对应的节点之间存在编码顺序信息边Escs
步骤B:将信息增强后的代码属性图向量化后得到源码表征G,向量化包括图中节点的向量化和节点间连接边的向量化;
进一步的,步骤B-1:对信息增强后的代码属性图中的节点进行向量化,节点对应源码文件中的关键词(token),使用所有关键词的集合作为语料库预先训练词嵌入模型Word2Vec,再使用预先训练好的词嵌入模型Word2Vec将关键词转化为d维的数值向量v,得到图节点矩阵V,V∈Rm×d,其中m为图中节点总数,d为每个节点对应的数值向量的维度。
步骤B-2:对信息增强后的代码属性图中节点间的边进行向量化,增强后的代码属性图中各节点间的边由邻接矩阵A表示,A∈{0,1}k×m×m,m是节点的总数,k是边类型的总数,k=4,四种类型的边分别是:抽象语法信息边East、控制流信息边Ecfg、数据流信息边Edfg、编码顺序信息边Escs。假定
Figure BDA0003553824520000061
是邻接矩阵A中的一个元素
Figure BDA0003553824520000062
Figure BDA0003553824520000063
等于1时表示序号为i的节点vi和序号为j的节点vj间存在p类型的边,
Figure BDA0003553824520000064
等于0时表示序号为i的节点vi和序号为j的节点vj间不存在p类型的边。
最终,信息增强后的代码属性图可以表示为G=(V,A),其中V为图节点特征矩阵,A为图的邻接矩阵。
步骤C:将源码表征G输入图卷积神经网络GCN中得到局部特征矩阵Hl;将源码表征G输入门控图神经网络GGNN中得到全局特征矩阵Hg
进一步的,
步骤C-1:源码表征G输入图卷积神经网络GCN得到局部特征矩阵Hl。其中,图卷积神经网络依次由第一图卷积层GraphConv1和第二图卷积层GraphConv2组成。通过第一图卷积层GraphConv1聚合每一个节点及其邻接节点的信息实现对图中每一个节点的特征向量进行更新,接着经过第二图卷积层GraphConv2再次聚合每一个节点及其邻接节点的信息对每一个节点的特征向量进行再次更新得到局部特征矩阵Hl,公式如下:
Hl=GraphConv2(GraphConv1(G)) (1)
步骤C-2:假设源码表征G输入门控图神经网络GGNN经过T时刻后得到全局特征矩阵Hg,在每个时刻t(t≤T),图中各节点接收相邻节点的信息,同时向相邻节点发送信息。每个节点的初始状态向量设置为该节点的数值向量v。通过聚合t-1时刻所有与节点vi以p类型的边相连的相邻节点的信息得到节点vi的更新状态向量
Figure BDA0003553824520000065
更新公式如下:
Figure BDA0003553824520000066
其中,
Figure BDA0003553824520000067
是t-1时刻节点vi的更新状态向量,
Figure BDA0003553824520000068
是A中p类型的边对应的邻接矩阵Ap的转置,Wp是权重矩阵,b是偏置项,
Figure BDA0003553824520000071
是t-1时刻序号为1、…、m的节点的隐藏状态向量的转置,每个节点t-1时刻的隐藏状态向量由该节点的初始状态向量经过t-1个时刻的更新后得到。
步骤C-3:累加t-1时刻节点vi通过k种(k=4)不同类型的边进行信息更新后得到的更新状态向量,再利用门控循环单元GRU结合t-1时刻节点vi的隐藏状态
Figure BDA0003553824520000072
得到当前t时刻节点vi的隐藏状态向量
Figure BDA0003553824520000073
公式如下:
Figure BDA0003553824520000074
其中,
Figure BDA0003553824520000075
表示t时刻节点vi的隐藏状态向量,
Figure BDA0003553824520000076
表示t-1时刻节点vi聚合通过p类型的边接收的信息后得到的更新状态向量,GRU表示门控循环单元,SUM表示累加函数。
门控循环单元包含控制门和和更新门,节点通过更新门对当前t时刻接收到的信息和t-1时刻接收到的信息中选取一部分信息进行保留;通过重置门对当前t时刻接收到的信息和t-1时刻接收到的信息中选取一部分信息进行舍弃。将重置门输出的信息、更新门输出的信息、以及节点自身的信息三者结合,作为节点t时刻的隐藏状态向量
Figure BDA0003553824520000077
T时刻将顶点集V中所有节点的隐藏状态向量拼接得到全局特征矩阵Hg,公式如下:
Figure BDA0003553824520000078
其中,m为顶点集V中的节点总数,
Figure BDA0003553824520000079
为T时刻节点vi的隐藏状态向量。
步骤D:将局部特征矩阵Hl和全局特征矩阵Hg拼接后输入分类器,分类器依次由一维卷积层、一维全局池化层、一维卷积层、一维全局池化层、全连接层和激活函数Sigmoid组成,最后输出检测结果。
步骤D具体为:
步骤D1:将得到的局部特征矩阵Hl和语义特征矩阵Hg进行拼接得到特征矩阵H,公式如下:
H=Concat(Hl,Hg) (5)
步骤D2:将特征矩阵H输入分类器中,分类器依次由一维卷积层Conv1D1、一维全局池化层MaxPool1D1、一维卷积层Conv1D2、一维全局池化层MaxPool1D2、全连接层Linear和激活函数Sigmoid组成,处理过程如下:
H经过一维卷积层Conv1D1和一维最大池化层MaxPool1D1后得到特征矩阵Z_1公式如下:
Z_1=MaxPool1D1(Conv1D1(H)) (6)
Z_1经过一维卷积层Conv1D2和一维最大池化层MaxPool1D2后得到特征矩Z_2公式如下:
Z_2=MaxPool1D2(Conv1D2(Z_1)) (7)
Z_2经过全连接层Linear和激活函数Sigmoid最后输出检测结果y,公式如下:
y=Sigmoid(Linear(Z_2)) (8)
y=1表示源码文件不存在漏洞,y=0表示源码文件不存在漏洞。
获取软件漏洞检测系统数据集,数据集表示为(源码文件,标签),其中源码文件用c表示,标签Y分为漏洞样本(Y=1)和非漏洞样本Y=0),存在漏洞的样本(漏洞样本)称为正样本,不存在漏洞的样本(非漏洞)称为负样本;将数据集中的函数文件按一定的比例随机划分为训练集、验证集和测试集。模型在训练集上进行训练,训练过程中采用焦点损失函数(Focal Loss)在损失计算时赋予正负样本不同大小的权重,焦点损失函数计算公式如下:
Figure BDA0003553824520000081
其中,α是平衡参数α∈[0,1],p是模型输出的概率p∈[0,1],γ是调节正负样本权重的参数γ∈[0,5],Y是标签,log是ln函数。α调节漏洞样本与非漏洞样本损失的权重,γ降低非漏洞样本的损失贡献,避免模型训练过程中过度拟合样本更多的非漏洞类别,优化模型的漏洞检测效果。

Claims (6)

1.一种基于混合图神经网络的软件源码漏洞检测方法,其特征在于,包括以下步骤:
步骤A:获得待检测源码文件的代码属性图,代码属性图包括关键词和关键词的组合,将源码文件的编码顺序信息加入代码属性图中得到信息增强后的代码属性图,信息增强后的代码属性图中的节点对应代码属性图中的关键词或关键词的组合;
步骤B:将信息增强后的代码属性图向量化后得到源码表征G,向量化包括图中节点的向量化和节点间连接边的向量化;
步骤C:将源码表征G输入图卷积神经网络GCN中得到局部特征矩阵Hl;将源码表征G输入门控图神经网络GGNN中得到全局特征矩阵Hg
步骤D:将局部特征矩阵Hl和全局特征矩阵Hg拼接后输入分类器,最后输出检测结果。
2.如权利要求1所述的一种基于混合图神经网络的软件源码漏洞检测方法,其特征在于,步骤A中所述的信息增强后的代码属性图具体为:
将源码文件的编码顺序信息加入代码属性图中,将图中存在编码顺序关系的节点使用编码顺序信息边Escs进行连接,得到信息增强后的代码属性图,信息增强后的代码属性图中边的类型有:抽象语法信息边East、控制流信息边Ecfg、数据流信息边Edfg、编码顺序信息边Escs,所述的抽象语法信息边East指关键词间存在语法关系与结构关系;控制流信息边Ecfg指程序执行期间可能遍历的所有路径,路径的选择由条件语句决定;数据流信息边Edfg指每个关键词的使用情况,包括关键词的访问、修改;编码顺序信息边Escs指源代码中关键词的自然顺序。
3.如权利要求1所述的一种基于混合图神经网络的软件源码漏洞检测方法,其特征在于,步骤B中所述的节点的向量化具体为:
对信息增强后的代码属性图中的节点进行向量化,节点对应源码文件中的关键词,使用所有关键词的集合作为语料库预先训练词嵌入模型Word2Vec,再使用预先训练好的词嵌入模型Word2Vec将关键词转化为d维的数值向量,得到图节点矩阵V,V∈Rm×d,其中m为图中节点总数,d为每个节点对应的数值向量的维度;
步骤B中所述的节点间连接边的向量化具体为:
对信息增强后的代码属性图中节点间的边进行向量化,增强后的代码属性图中各节点间的边由邻接矩阵A表示,A∈{0,1}k×m×m,m是节点的总数,k是边类型的总数,k=4,四种类型的边分别是:抽象语法信息边East、控制流信息边Ecfg、数据流信息边Edfg、编码顺序信息边Escs,其中,
Figure FDA0003553824510000021
是邻接矩阵A中的一个元素
Figure FDA0003553824510000022
Figure FDA0003553824510000023
等于1时表示序号为i的节点vi和序号为j的节点vj间存在p类型的边,
Figure FDA0003553824510000024
等于0时表示序号为i的节点vi和序号为j的节点vj间不存在p类型的边;
最终,信息增强后的代码属性图可以表示为G=(V,A),其中V为图节点特征矩阵,A为图的邻接矩阵。
4.如权利要求1所述的一种基于混合图神经网络的软件源码漏洞检测方法,其特征在于,所述步骤C具体为:
步骤C-1:源码表征G输入图卷积神经网络GCN得到局部特征矩阵Hl,其中,图卷积神经网络依次由第一图卷积层GraphConv1和第二图卷积层GraphConv2组成,通过第一图卷积层GraphConv1聚合源码表征G中每一个节点及其邻接节点的信息实现对信息增强后的代码属性图中每一个节点的特征向量进行更新,接着经过第二图卷积层GraphConv2再次聚合每一个节点及其邻接节点的信息对每一个节点的特征向量进行再次更新得到局部特征矩阵Hl,公式表示如下:
Hl=GraphConv2(GraphConv1(G)) (1)
步骤C-2:假设源码表征G输入门控图神经网络GGNN经过T时刻后得到全局特征矩阵Hg,在每个时刻t,t≤T,信息增强后的代码属性图中各节点接收相邻节点的信息,同时向相邻节点发送信息,通过聚合t-1时刻所有与节点vi以p类型的边相连的相邻节点的信息得到t-1时刻节点vi的更新状态向量
Figure FDA0003553824510000029
更新公式具体如下:
Figure FDA0003553824510000025
其中,
Figure FDA0003553824510000026
是A中p类型的边对应的邻接矩阵Ap的转置,Wp是权重矩阵,b是偏置项,
Figure FDA0003553824510000027
是t-1时刻序号为1、…、m的节点的隐藏状态向量的转置;
步骤C-3:累加t-1时刻节点vi通过k种不同类型的边进行信息更新后得到的更新状态向量,再利用门控循环单元GRU结合t-1时刻节点vi的隐藏状态向量
Figure FDA0003553824510000031
得到当前t时刻节点vi的隐藏状态向量
Figure FDA0003553824510000032
具体表示如下:
Figure FDA0003553824510000033
其中,
Figure FDA0003553824510000034
表示t时刻节点vi的隐藏状态向量,GRU表示门控循环单元,SUM表示累加函数;
T时刻将顶点集V中所有节点的隐藏状态向量拼接得到全局特征矩阵Hg,公式如下:
Figure FDA0003553824510000035
其中,m为顶点集V中的节点总数,
Figure FDA0003553824510000036
为T时刻节点vi的隐藏状态向量。
5.如权利要求1所述的一种基于混合图神经网络的软件源码漏洞检测方法,其特征在于,所述分类器依次由第一一维卷积层、第一一维全局池化层、第二一维卷积层、第二一维全局池化层、全连接层和激活函数Sigmoid组成。
6.如权利要求1所述的一种基于混合图神经网络的软件源码漏洞检测方法,其特征在于,训练过程中采用焦点损失函数Focal Loss在损失计算时根据正负样本比例赋予正负样本不同大小的权重。
CN202210274334.2A 2022-03-18 2022-03-18 一种基于混合图神经网络的软件源码漏洞检测方法 Pending CN114611115A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210274334.2A CN114611115A (zh) 2022-03-18 2022-03-18 一种基于混合图神经网络的软件源码漏洞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210274334.2A CN114611115A (zh) 2022-03-18 2022-03-18 一种基于混合图神经网络的软件源码漏洞检测方法

Publications (1)

Publication Number Publication Date
CN114611115A true CN114611115A (zh) 2022-06-10

Family

ID=81864614

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210274334.2A Pending CN114611115A (zh) 2022-03-18 2022-03-18 一种基于混合图神经网络的软件源码漏洞检测方法

Country Status (1)

Country Link
CN (1) CN114611115A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357909A (zh) * 2022-10-19 2022-11-18 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种用于代码漏洞检测的全局信息感知图神经网络系统
CN115577361A (zh) * 2022-12-09 2023-01-06 四川大学 一种改进的基于图神经网络的PHP Web shell检测方法
CN116935252A (zh) * 2023-07-10 2023-10-24 齐鲁工业大学(山东省科学院) 一种基于子图嵌入图神经网络的机械臂碰撞检测方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357909A (zh) * 2022-10-19 2022-11-18 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种用于代码漏洞检测的全局信息感知图神经网络系统
CN115577361A (zh) * 2022-12-09 2023-01-06 四川大学 一种改进的基于图神经网络的PHP Web shell检测方法
CN115577361B (zh) * 2022-12-09 2023-04-07 四川大学 一种改进的基于图神经网络的PHP Web shell检测方法
CN116935252A (zh) * 2023-07-10 2023-10-24 齐鲁工业大学(山东省科学院) 一种基于子图嵌入图神经网络的机械臂碰撞检测方法
CN116935252B (zh) * 2023-07-10 2024-02-02 齐鲁工业大学(山东省科学院) 一种基于子图嵌入图神经网络的机械臂碰撞检测方法

Similar Documents

Publication Publication Date Title
CN111783100B (zh) 基于图卷积网络对代码图表示学习的源代码漏洞检测方法
CN114611115A (zh) 一种基于混合图神经网络的软件源码漏洞检测方法
CN110232280B (zh) 一种基于树结构卷积神经网络的软件安全漏洞检测方法
CN107229563B (zh) 一种跨架构的二进制程序漏洞函数关联方法
CN113672931B (zh) 一种基于预训练的软件漏洞自动检测方法及装置
CN113326187B (zh) 数据驱动的内存泄漏智能化检测方法及系统
CN112364352B (zh) 可解释性的软件漏洞检测与推荐方法及系统
CN116089957A (zh) 一种基于语法和语义特征融合的智能合约漏洞检测方法及装置
CN114238100A (zh) 基于GGNN和分层注意力网络的Java漏洞检测定位方法
CN114861194A (zh) 一种基于bgru与cnn融合模型的多类型漏洞检测方法
CN110162972A (zh) 一种基于语句联合编码深度神经网络的uaf漏洞检测方法
CN114547611A (zh) 一种基于多模态特征的智能合约庞氏骗局检测方法及系统
CN112668013A (zh) 一种面向Java源码的语句级模式探索的漏洞检测方法
Lu et al. Program classification using gated graph attention neural network for online programming service
CN113741886A (zh) 一种基于图的语句级程序修复方法及系统
CN115577362A (zh) 基于源代码和汇编代码跨模态特征增强的漏洞检测方法
CN116340952A (zh) 一种基于操作码程序依赖图的智能合约漏洞检测方法
CN116150757A (zh) 一种基于cnn-lstm多分类模型的智能合约未知漏洞检测方法
CN115329088A (zh) 图神经网络事件检测模型的鲁棒性分析方法
CN116702160B (zh) 一种基于数据依赖增强程序切片的源代码漏洞检测方法
CN111898134B (zh) 基于LSTM和BiLSTM的智能合约漏洞检测方法和装置
CN115859307A (zh) 基于树型注意力和加权图匹配的相似漏洞检测方法
CN116318845A (zh) 一种正负样本比例不平衡条件下的dga域名检测方法
Wang et al. Sound and complete causal identification with latent variables given local background knowledge
CN113342982B (zh) 融合RoBERTa和外部知识库的企业行业分类方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination