本发明涉及代码漏洞检测领域,尤其是涉及一种基于改进图神经网络的源代码漏洞检测方法。
背景技术:
1、代码表征形成的图数据是源代码漏洞检测的关键,但由于代码表征提取方法不够完善,造成稀疏图数据的出现,使得图数据难以通过模型捕捉其内在的信息,最终导致检测的效果差等问题。
2、因此,研究如何在原始特征上获得潜在信息,有效地处理输入图数据,同时避免扁平化代码中间表示图导致结构信息丧失的问题十分必要。
技术实现思路
1、本发明的目的是提供一种基于改进图神经网络的源代码漏洞检测方法,能够全面、高效地捕获节点特征,提升漏洞检测的有效性。
2、为实现上述目的,本发明提供一种基于改进图神经网络的源代码漏洞检测方法,包括以下步骤:
3、s1、结合自监督注意力模型sgat和局部增强模型la,构建基于改进图神经网络la_sgat的漏洞检测方法;
4、s2、收集源代码数据集并进行预处理,提取源代码的节点特征;
5、s3、通过局部增强模型la,对节点特征进行局部增强,并与节点特征结合,获得第一输出特征;
6、s4、将节点的第一输出特征形成的特征矩阵和邻接矩阵作为输入,通过自监督注意力模型sgat进行训练,获得第二输出特征;
7、s5、基于第二输出特征,通过金字塔池化、全连接层和softmax分类层,得到源代码漏洞检测结果。
8、优选的,步骤s3中,局部增强模型la包括基于变分自动编码器cvae构造生成模型,通过生成模型获得与节点相关的局部增强特征,作为训练迭代的额外输入。
9、优选的,局部增强模型la的损失函数包括监督损失函数和一致性损失函数,具体如下:
10、
11、式中,为监督损失函数,为一致性正则化损失函数k为训练的标签,yi为训练样本i的真实标签,为训练样本i属于类别k的预测概率,s为样本数量,n为每个样本中的元素个数,为第s个样本中第i个元素的预测值,是第i个元素的目标值。
12、优选的,步骤s4中,自监督注意力模型sgat包括自监督注意力机制和图注意力机制;其中,自监督注意力机制作用于第一输出特征,获取节点的关系特征,并通过图注意力机制对得到的关系特征进行采样,获得第二输出特征。
13、优选的,基于负采样和二分类逻辑回归,建立自监督损失函数,具体如下:
14、
15、式中,e-为负采样,e∪e-为抽样的集合;1为指示函数,当边(i,j)为正样本时,指示函数返回1,否则返回0;为图神经网络的注意力系数。
16、优选的,总损失函数包括节点的交叉熵损失、自监督损失和l2正则化损失,具体如下:
17、
18、式中,为总损失函数,为交叉熵损失函数,λe、λ2为混合系数,为第l卷积层自监督损失函数。
19、因此,本发明采用上述一种基于改进图神经网络的源代码漏洞检测方法,具有以下技术效果:
20、(1)采用局部增强模型la能够增强稀疏代码图数据的表征,减少噪声,弥补稀疏图特征明显的缺点;
21、(2)采用自监督注意力模型sgat,能够有效的学习图数据中的特征信息,并且能够处理稀疏图特征和图数据中的边噪声,全面、高效地捕获节点特征,提升漏洞检测的有效性。
22、下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
1.一种基于改进图神经网络的源代码漏洞检测方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于改进图神经网络的源代码漏洞检测方法,其特征在于,步骤s3中,局部增强模型la包括基于变分自动编码器cvae构造生成模型,通过生成模型获得与节点相关的局部增强特征,作为训练迭代的额外输入。
3.根据权利要求2所述的一种基于改进图神经网络的源代码漏洞检测方法,其特征在于,局部增强模型la的损失函数包括监督损失函数和一致性损失函数,具体如下:
4.根据权利要求1所述的一种基于改进图神经网络的源代码漏洞检测方法,其特征在于,步骤s4中,自监督注意力模型sgat包括自监督注意力机制和图注意力机制;其中,自监督注意力机制作用于第一输出特征矩阵,获取节点的关系特征,并通过图注意力机制对得到的关系特征进行采样,获得第二输出特征。
5.根据权利要求4所述的一种基于改进图神经网络的源代码漏洞检测方法,其特征在于,基于负采样和二分类逻辑回归,建立自监督损失函数,具体如下:
6.根据权利要求5所述的一种基于改进图神经网络的源代码漏洞检测方法,其特征在于,总损失函数包括节点的交叉熵损失、自监督损失和l2正则化损失,具体如下: