【技术实现步骤摘要】
一种基于图神经网络的细粒度源代码漏洞检测方法
本专利技术涉及网络安全
,尤其涉及一种基于图神经网络的细粒度源代码漏洞检测方法。
技术介绍
软件作为信息化社会中不可或缺的一部分发挥着越来越重要的作用,它不仅和个人的日常生活密不可分也和社会的发展息息相关。然而软件是一把双刃剑,它在为个人和社会提供便利的服务的同时,软件中潜在的漏洞也可能会对个人和社会造成极大的损失。软件中的漏洞往往是不可避免地,一方面是由于软件在设计、开发、部署过程中很难做到不存在问题,另一方面则是由于商业效益原因软件开发周期不能太长,进一步增加了软件存在漏洞的风险。为了减少软件中漏洞,提高软件质量,软件漏洞检测技术应运而生。漏洞检测技术就是通过检查软件的源代码或者软件的执行过程,根据经验、已知的漏洞模式、软件的执行结果等判断软件是否存在漏洞。现有的漏洞检测技术按照是否需要执行软件分为静态的方法和动态的方法。静态的漏洞检测方法无需运行软件,通过分析软件的源代码或二进制文件,寻找软件中的漏洞,成熟的方法主要有污点分析、安全规则检查等。静态分析的方法通 ...
【技术保护点】
1.一种基于图神经网络的细粒度源代码漏洞检测方法,其特征在于,包括以下步骤:/n步骤A,对于一个软件的所有源代码,抽取源代码中函数的代码属性图,将代码属性图进行向量化表示,向量化表示包括节点属性、图结构的向量化表示;/n步骤B,使用图注意力网络抽取代码特征,将向量化表示的代码属性图输入到图注意力网络中,学习得到节点的抽象向量表示,从节点向量表示中提取函数中每一语句的向量表示x,根据语句是否存在漏洞,为语句添加标签y,对所有语句进行处理得到最终的数据集;/n步骤C,训练漏洞检测模型,将数据集分为训练集、测试集,将训练集的数据输入到一个卷积神经网络中进行训练,通过在测试集上的效 ...
【技术特征摘要】
1.一种基于图神经网络的细粒度源代码漏洞检测方法,其特征在于,包括以下步骤:
步骤A,对于一个软件的所有源代码,抽取源代码中函数的代码属性图,将代码属性图进行向量化表示,向量化表示包括节点属性、图结构的向量化表示;
步骤B,使用图注意力网络抽取代码特征,将向量化表示的代码属性图输入到图注意力网络中,学习得到节点的抽象向量表示,从节点向量表示中提取函数中每一语句的向量表示x,根据语句是否存在漏洞,为语句添加标签y,对所有语句进行处理得到最终的数据集;
步骤C,训练漏洞检测模型,将数据集分为训练集、测试集,将训练集的数据输入到一个卷积神经网络中进行训练,通过在测试集上的效果进行网络参数的调整,通过测试集上的效果确定最终的模型。
2.如权利要求1所述的一种基于图神经网络的细粒度源代码漏洞检测方法,其特征在于,所述步骤A具体为:
步骤A-1),将代码属性图的节点进行向量化表示,代码属性图的节点属性包含代码和类型两个属性;代码属性的内容为标志序列,以所有的标志的集合作为词库,使用词嵌入模型将标志转换成数值向量表示,进一步将代码属性表示成标志向量的均值Vcode;类型属性表示节点的类型,使用一位热编码将其表示成数值向量Vtype,最终节点属性Vnode由Vcode和Vtype拼接而成;
步骤A-2),将代码属性图的图结构进行向量化表示,CPG图结构由邻接矩阵A表示,代码属性图中边的类型包括抽象语法树的边EAST、控制流图的边ECFG,在邻接矩阵中用1表示EAST,用...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。