一种程序切片漏洞检测方法、系统、计算机及存储介质技术方案

技术编号:35926692 阅读:32 留言:0更新日期:2022-12-10 11:21
本发明专利技术提供一种程序切片漏洞检测方法、系统、计算机及存储介质,程序切片漏洞检测方法,包括提取程序切片的程序依赖图,以将程序切片的代码文本转化为由节点和图边构成的图结构;将节点及图边进行数据化描述,以将图结构转化为图数据;将图数据区隔为训练集及测试集;基于训练集构建GGNAT图表征学习模型,GGNAT图表征学习模型用于漏洞检测。通过采用上述方法,有效地解决了传统图特征学习方法在图节点向量嵌入中对代码行级的结构特征和统计特征表征能力上不足的问题;能够高效地挖掘多维特征与漏洞之间的关联,相比传统的漏洞检测方法,显著提高检测的性能。显著提高检测的性能。显著提高检测的性能。

【技术实现步骤摘要】
一种程序切片漏洞检测方法、系统、计算机及存储介质


[0001]本申请涉及信息安全检测
,特别是涉及一种程序切片漏洞检测方法、系统、计算机及存储介质。

技术介绍

[0002]随着数字化、信息化、智能化技术的高速发展,利用程序漏洞盗取信息或发起网络攻击已成为信息安全的主要威胁,软件安全和信息安全愈发受到重视。为了减少程序漏洞的引入,人们提出了程序切片漏洞检测技术,它能帮助人们在设计、编码等工作中尽早地确定审查重心,并显著地减少漏洞的数量,从而降低软件研制和维护成本。
[0003]在程序漏洞分析中,程序切片是一种重要分析方法,通过数据流和控制流来分解程序,并删除程序中不重要语句,提取出影响程序点的程序代码,从而更关注程序中可能包含漏洞的部分。但是,由于产生程序漏洞的类型差异较大,如设计错误、编码不规范、测试不足等,如何更准确地检测这些复杂、隐秘且多样的程序漏洞仍是一个较大挑战。
[0004]近年来,深度学习方法在漏洞数据挖掘中显现出了强大的潜力,采用深度学习提升程序切片漏洞检测性能成为了一种趋势。图表征学习是深度学习技术的一种,该方法将图结构表征成低维、稠密的向量结构,实现图结构的深入分析。利用图表征学习方法进行程序切片漏洞检测是一种更为有效的新方法,然而当前图表征学习技术在进行程序切片图节点嵌入过程中采用Word2Vec或Code2Vec实现,强调从代码行的词汇构成的语言处理角度进行特征向量化,没有充分考虑代码行本身的深层结构特征,复杂语义结构难以被充分地体现在嵌入向量。与此同时,以传统图卷积网络、图神经网络为主的图表征学习方法在学习程序切片中深层的结构特征上仍有不足,漏洞检测的效率难以进一步提升。

技术实现思路

[0005]本申请实施例提供了一种程序切片漏洞检测方法、系统、计算机及存储介质,旨在强化图表征能力并提升程序切片漏洞检测性能,并以此为基础,有效地推动信息安全和漏洞检测技术的发展。
[0006]第一方面,本申请实施例提供了一种程序切片漏洞检测方法,其特征在于,包括以下步骤:提取程序切片的程序依赖图,以将程序切片的代码文本转化为由节点和图边构成的图结构;将所述节点及所述图边进行数据化描述,以将所述图结构转化为图数据;将所述图数据区隔为训练集及测试集;基于所述训练集构建GGNAT图表征学习模型,所述GGNAT图表征学习模型用于漏洞检测。
[0007]进一步地,所述将所述节点及所述图边进行数据化描述,以将所述图结构转化为图数据的步骤包括:
对所述节点进行节点嵌入,以将所述节点转化为节点数据;将所述图边以邻接矩阵的形式进行存储,以将所述图边转化为图边数据;组合所述节点数据及所述图边数据,以形成所述图数据。
[0008]进一步地,所述对所述节点进行节点嵌入,以将所述节点转化为节点数据的步骤具体为:获取所述节点数据的包含代码,提取所述包含代码的节点属性特征,将所述节点属性特征映射到数值向量空间,以获取属性向量V
Attribute
;将所述包含代码的代码段落进行向量表示,以获取段落向量V
Paragraph
;将所述包含代码的代码段落转换为AST数据结构树,聚合所述AST数据结构树的子树节点,将聚合后的所述子树节点映射至向量空间,以获取结构向量V
AST
;拼接所述属性向量V
Attribute
、所述段落向量V
Paragraph
及所述结构向量V
AST
,以形成所述节点数据。
[0009]进一步地,所述训练集于所述图数据中的占比为70%~80%。
[0010]进一步地,所述基于所述训练集构建GGNAT图表征学习模型,所述GGNAT图表征学习模型用于漏洞检测的步骤包括:以门控图神经网络构建门控图循环层,将所述训练集作为所述门控图循环层的输入值,以获取节点状态;以图注意力机制构建图注意层,将所述节点状态作为所述图注意层的输入值,以获取节点特征;以最大池化与平均池化的组合池化法进行卷积运算,以构建池化层,将所述节点特征作为所述池化层的输入值,以获取全局表征向量;以多层感知机构建预测层,将所述全局表征向量作为所述预测层的输入值,以获取所述GGNAT图表征学习模型。
[0011]进一步地,所述预测层包括多层感知机模型,所述多层感知机模型为:其中,SigMoid为饱和激活函数、AVG为平均数函数、MLP为多层感知器、为所述全局表征向量。
[0012]进一步地,在所述基于所述训练集构建GGNAT图表征学习模型,所述GGNAT图表征学习模型用于漏洞检测的步骤之后,还包括:将所述测试集代入所述GGNAT图表征学习模型,以检测所述GGNAT图表征学习模型的漏洞检测功能。
[0013]第二方面,本申请实施例提供了一种程序切片漏洞检测系统,用于所述程序切片漏洞检测方法,其特征在于,所述系统包括:提取模块,用于提取程序切片的程序依赖图,以将程序切片的代码文本转化为由节点和图边构成的图结构;转化模块,用于将所述节点及所述图边进行数据化描述,以将所述图结构转化为图数据;
分隔模块,用于将所述图数据区隔为训练集及测试集;构建模块,用于基于所述训练集构建GGNAT图表征学习模型,所述GGNAT图表征学习模型用于漏洞检测。
[0014]第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的程序切片漏洞检测方法。
[0015]第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的程序切片漏洞检测方法。
[0016]相比于相关技术,本专利技术的有益效果在于:将所述程序切片用程序依赖图表征,并从属性、段落及AST结构三个不同特征维度分别对所述节点进行嵌入,通过拼接共同表征图节点,有效地解决了传统图特征学习方法在图节点向量嵌入中对代码行级的结构特征和统计特征表征能力上不足的问题;采用融合GGNN算法与图注意机制的所述GGNAT图表征学习模型进行图表征学习,能够高效地挖掘多维特征与漏洞之间的关联,相比传统的漏洞检测方法,本专利技术能显著提高检测的性能。
[0017]本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
[0018]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本专利技术第一实施例中程序切片漏洞检测方法的流程图;图2为本专利技术第二实施例中程序切片漏洞检测方法的流程图;图3为本专利技术第二实施例中程序切片漏洞检测方法中结构向量的获取流程图;图4为本专利技术第二实施例中程序切片漏洞检测方法中以训练集构建GGNAT漏洞检测模型的过程图;图5为本专利技术第三实施例中程序切片漏洞检测系统的结构框图。
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序切片漏洞检测方法,其特征在于,包括以下步骤:提取程序切片的程序依赖图,以将程序切片的代码文本转化为由节点和图边构成的图结构;将所述节点及所述图边进行数据化描述,以将所述图结构转化为图数据;将所述图数据区隔为训练集及测试集;基于所述训练集构建GGNAT图表征学习模型,所述GGNAT图表征学习模型用于漏洞检测。2.根据权利要求1所述的程序切片漏洞检测方法,其特征在于,所述将所述节点及所述图边进行数据化描述,以将所述图结构转化为图数据的步骤包括:对所述节点进行节点嵌入,以将所述节点转化为节点数据;将所述图边以邻接矩阵的形式进行存储,以将所述图边转化为图边数据;组合所述节点数据及所述图边数据,以形成所述图数据。3.根据权利要求2所述的程序切片漏洞检测方法,其特征在于,所述对所述节点进行节点嵌入,以将所述节点转化为节点数据的步骤具体为:获取所述节点数据的包含代码,提取所述包含代码的节点属性特征,将所述节点属性特征映射到数值向量空间,以获取属性向量V
Attribute
;将所述包含代码的代码段落进行向量表示,以获取段落向量V
Paragraph
;将所述包含代码的代码段落转换为AST数据结构树,聚合所述AST数据结构树的子树节点,将聚合后的所述子树节点映射至向量空间,以获取结构向量V
AST
;拼接所述属性向量V
Attribute
、所述段落向量V
Paragraph
及所述结构向量V
AST
,以形成所述节点数据。4.根据权利要求1所述的程序切片漏洞检测方法,其特征在于,所述训练集于所述图数据中的占比为70%~80%。5.根据权利要求1所述的程序切片漏洞检测方法,其特征在于,所述基于所述训练集构建GGNAT图表征学习模型,所述GGNAT图表征学习模型用...

【专利技术属性】
技术研发人员:肖鹏张旭升聂嘉浩郑巍樊鑫
申请(专利权)人:南昌航空大学
类型:发明
国别省市:

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

1