【技术实现步骤摘要】
一种异构图神经网络代码漏洞检测方法
[0001]本申请涉及信息系统代码安全
,具体涉及一种异构图神经网络代码漏洞检测方法
。
技术介绍
[0002]近年来,随着信息技术的快速发展,软件安全问题逐渐受到广泛关注
。
为了确保软件的安全性和可靠性,对软件进行源码级的漏洞检测成为研究者和工程师的关键任务,以在软件发布之前识别并消除其中的潜在风险
。
传统的漏洞检测技术通常需要依赖专家的经验,耗时并需要大量人工参与,效率低下
。
[0003]随着技术的演进,有专利申请提出了利用人工智能技术,尤其是深度神经网络,进行源码级漏洞检测的方法
。
这种新的方法理论上可以大大提高漏洞检测的效率和准确性,减少对专家经验的依赖
。
[0004]然而,实际应用中,基于深度神经网络的漏洞检测技术仍然存在许多问题和挑战
。
首先,尽管许多现有的方法尝试利用深度神经网络进行漏洞检测,但它们大多只考虑了源码的序列信息或部分语义信息,难以识别复杂的软件漏洞
。
其次,这些方法尚未充分利用深度神经网络处理复杂数据结构的能力,模型判别容易受到非关键信息的干扰;最后,使用深度学习方法进行漏洞检测时,由于序列模型不能较好的处理代码语义图这种非欧数据,使模型学习过程中样本漏洞信息丢失
。
[0005]因此,如何设计一个既能充分利用源码结构和语义信息,又能有效避免误报的深度神经网络模型,成为了当前源码级漏洞检测研究的关键问 ...
【技术保护点】
【技术特征摘要】
1.
一种异构图神经网络代码漏洞检测方法,其特征在于包括以下步骤:
S1、
将训练数据集进行图表示
S1
‑
1.
生成训练数据集的图表示的节点信息
S1
‑
2.
生成训练数据集的图表示的边信息
(1)
采用
CoderSurfer
工具生成训练数据集的节点间的抽象代码树边,得到第一类边信息;
(2)
采用
CoderSurfer
工具生成训练数据集的节点间的控制流边,得到第二类边信息;
(3)
采用
CoderSurfer
工具生成训练数据集的节点间的数据流边,得到第三类边信息;
(4)
采用
CoderSurfer
工具生成训练数据集的节点间的调用边,得到第四类边信息;
S1
‑
3.
生成训练数据集异构图表示将节点信息与节点间的四类边信息复合得到图表示,并计为
G
=
(
ν
,
ε
),
其中
ν
为图表示的节点的集合,
ε
为图中所有类型的边的总和,
ε
j
表示某一特定类型的边;
S2、
将训练数据集异构图表示输入图注意力网络
GAT
模型
S2
‑
1.
将训练数据集中的节点信息与第一至四类边信息合并为同构子图输入图注意力网络
GAT
模型,将注意力系数归一化后再与其对应的特征进行线性组合,得到包括训练数据集节点信息的图注意力模型
GAT1
;
S2
‑
2.
根据边的类型将训练集图表示划分为不同的子图,并对各子图应用节点级注意力机制;针对在多个子图中重合的节点,综合其在各子图中学习到的特征;通过路径级注意力机制将各子图学习到的特征表示聚合,作为节点的终端表示形式,其中对于与漏洞检测高度相关的子图中学习到的节点特征,赋予更高的权重,得到在节点级注意力网络模型
GAT1
中加入路径级注意力网络模型
GAT2
;
S3、
检测样本初始化
S3
‑
1.
数据清洗及切片
S3
‑
2.
图初始化
(1)
采用
CoderSurfer
工具生成检测样本的节点信息,所述节点信息包括该节点代表的代码语句和该节点的类型;
(2)
生成训练数据集的图表示的边信息,采用
CoderSurfer
工具生成检测样本的节点间的抽象代码树边
、
控制流边
、
数据流边
、
调用边;得到检测样本的图表示;
S4、
使用分类器模块对
GAT2
模型对检测样本的图表示运算结果降维输出将
GAT2
模型中训练得到的训练集图表示节点信息
h
i
与检测样本的图表示节点信息
H
i
连接并输入两个卷种层中进行卷积处理,每一个卷积层的后面都代入
Relu
激活函数并进行最大池化操作,获得与漏洞更相关的高级特征,然后再将该高级特征输入到
MLP
模型中进行二分类,得到漏洞检测结果
。2.
根据权利要求1所述的一种异构图神经网络代码漏洞检测方法,其特征在于:在
S1
...
【专利技术属性】
技术研发人员:谢成,李楠,林华,李勇,魏特,刘勤,蔡佳旺,
申请(专利权)人:北京远禾科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。