软件源代码缺陷检测方法及装置制造方法及图纸

技术编号:33210088 阅读:12 留言:0更新日期:2022-04-24 01:03
本申请涉及一种软件源代码缺陷检测方法及装置,软件源代码缺陷检测方法包括获取源软件代码,根据源软件代码构造代码属性图,将代码属性图输入预设基于图神经网络的源代码缺陷检测模型,预设基于图神经网络的源代码缺陷检测模型用于生成自适应接收路径,并根据自适应接收路径输出检测结果,可以减少无关代码信息的影响,提高代码漏洞检测的效率。提高代码漏洞检测的效率。提高代码漏洞检测的效率。

【技术实现步骤摘要】
软件源代码缺陷检测方法及装置


[0001]本申请属于软件测试
,具体涉及一种软件源代码缺陷检测方法及装置。

技术介绍

[0002]由于软件用户的大量增加和软件功能的日益丰富,软件的复杂性急剧增加,不可避免地增加了软件系统的安全风险。然而,即使对于具有专门安全专业知识的开发人员来说,检测漏洞也是具有挑战性的。因此,源代码中漏洞的自动检测引起了极大的研究关注。传统的软件代码检测方法如静态分析、动态分析、符号执行等传统技术依赖专家知识,人工成本高且误报率高,在实际生产中不能令人满意。相关技术中,基于深度神经网络的特征挖掘和表示能力也为自动检测软件漏洞提供了有效的技术途径,然而,由于基于深度神经网络的软件检测方法专注于学习源代码整个图结构的嵌入表示,表示为平面序列或属性图,而漏洞往往隐藏在特定的程序路径中,例如控制流路径或数据流路径。在处理过程中,会受到大部分无关的代码信息的影响,影响检测效率和检测结果的准确性。

技术实现思路

[0003]为至少在一定程度上克服相关技术中,基于深度神经网络的软件代码检测方法存在的检测效率低、检测结果准确性差的问题,本申请提供一种软件源代码缺陷检测方法及装置。
[0004]第一方面,本申请提供一种软件源代码缺陷检测方法,包括:获取源软件代码;根据所述源软件代码构造代码属性图;将所述代码属性图输入预设基于图神经网络的源代码缺陷检测模型,所述预设基于图神经网络的源代码缺陷检测模型用于生成自适应接收路径,并根据所述自适应接收路径输出检测结果。
[0005]进一步的,所述根据所述源软件代码构造代码属性图,包括:根据所述源软件代码生成函数代码的字符特征、语句特征以及控制流信息图;根据所述函数代码的字符特征、语句特征以及控制流信息图得到函数对应代码的控制依赖图信息、数据依赖图信息;根据所述控制依赖图信息、数据依赖图信息和代码的自身语义信息,构造出代码属性图。
[0006]进一步的,所述将所述代码属性图输入预设基于图神经网络模型的源代码缺陷检测模型,包括:对所述代码属性图进行节点向量化表示,所述节点向量化表示包括代码向量化和类型向量化;将所述类型向量化输入预设基于图神经网络模型的源代码缺陷检测模型中门控图神经网络层,将代码属性图的所有节点信息表示为一个函数的图表征信息;
对所述预设基于图神经网络模型的源代码缺陷检测模型进行参数优化得到所述自适应接收路径;将所述图表征信息输入预设基于图神经网络模型的源代码缺陷检测模型中的所述自适应接收路径得到函数的图表征信息的分类结果,所述分类结果为对应函数代码是否为漏洞。
[0007]进一步的,所述对所述代码属性图进行向量化表示,包括:使用Word2Vec模型在源代码语料库上进行预训练;预训练好的Word2Vec模型对代码属性图的代码进行向量化得到节点代码向量化;对代码属性图的类型用进行标签编码得到节点类型向量化;将所述节点代码向量化和节点类型向量化进行拼接作为初始节点向量化表示。
[0008]进一步的,所述对所述预设基于图神经网络模型的源代码缺陷检测模型进行参数优化得到所述自适应接收路径,包括:将基于图表征信息的训练数据输入密集层函数投影到潜在空间;在潜在空间中通过三元组损失函数优化所述预设基于图神经网络模型的源代码缺陷检测模型的参数;根据优化后参数得到所述自适应接收路径。
[0009]进一步的,所述将所述类型向量化输入预设基于图神经网络模型的源代码缺陷检测模型中门控图神经网络层,将代码属性图的所有节点信息表示为一个函数的图表征信息,包括:构建带有自适应路径层的图神经网络模型;在自适应路径层中选择图神经网络的感受野;构建自适应广度函数和自适应深度函数通过所述自适应广度函数和自适应深度函数,得到每一张代码属性图对应的函数的图表征信息。
[0010]进一步的,所述自适应深度函数包括:通过门控层提取当前层的记忆信息,并结合前一层的记忆信息生成当前层的记忆信息表示。
[0011]进一步的,还包括:在检测结果为存在漏洞时,基于自适应广度函数中节点的注意力值计算出边的权重值;判断所述边的权重值是否超出预设阈值;若是,将超出预设阈值的边的权重值对应的边的集合作为与漏洞关联的代码语句和路径。
[0012]进一步的,所述基于自适应广度函数中节点的注意力值计算出边的权重值,包括:使用注意力机制来分配每个节点1阶邻居的重要性,并聚合每个1阶邻居的信息:通过注意力机制获取每个节点1阶邻居的权重,并通过加权平均后进行非线性变换得到节点对应边的权重值。
[0013]第二方面,本申请提供一种软件源代码缺陷检测装置,包括:获取模块,用于获取源软件代码;
构造模块,用于根据所述源软件代码构造代码属性图;输出模块,用于将所述代码属性图输入预设基于图神经网络的源代码缺陷检测模型,所述预设基于图神经网络的源代码缺陷检测模型用于生成自适应接收路径,并根据所述自适应接收路径输出检测结果。
[0014]本申请的实施例提供的技术方案可以包括以下有益效果:本专利技术实施例提供的软件源代码缺陷检测方法及装置,通过获取源软件代码,根据源软件代码构造代码属性图,将代码属性图输入预设基于图神经网络的源代码缺陷检测模型,预设基于图神经网络的源代码缺陷检测模型用于生成自适应接收路径,并根据自适应接收路径输出检测结果,可以减少无关代码信息的影响,提高代码漏洞检测的效率。
[0015]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
[0016]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
[0017]图1为本申请一个实施例提供的一种软件源代码缺陷检测方法的流程图。
[0018]图2为本申请另一个实施例提供的一种软件源代码缺陷检测方法的流程图。
[0019]图3为本申请一个实施例提供的一种软件源代码缺陷检测方法中自适应接收路径示意图。
[0020]图4为本申请另一个实施例提供的一种软件源代码缺陷检测方法的流程图。
[0021]图5为本申请一个实施例提供的一种软件源代码缺陷检测方法深度函数和广度函数流程示意图。
[0022]图6为本申请一个实施例提供的一种软件源代码缺陷检测方法的一个代码片段实例图。
[0023]图7为本申请一个实施例提供的一种软件源代码缺陷检测方法中代码片段通过自适应路径得到边的权重值示意图。
[0024]图8为本申请一个实施例提供的一种软件源代码缺陷检测方法的整体框架示意图。
[0025]图9为本申请一个实施例提供的一种软件源代码缺陷检测装置的功能结构图。
具体实施方式
[0026]为使本申请的目的、技术方案和优点更加清楚,下面将对本申请的技术方案进行详细的描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件源代码缺陷检测方法,其特征在于,包括:获取源软件代码;根据所述源软件代码构造代码属性图;将所述代码属性图输入预设基于图神经网络的源代码缺陷检测模型,所述预设基于图神经网络的源代码缺陷检测模型用于生成自适应接收路径,并根据所述自适应接收路径输出检测结果。2.根据权利要求1所述的软件源代码缺陷检测方法,其特征在于,所述根据所述源软件代码构造代码属性图,包括:根据所述源软件代码生成函数代码的字符特征、语句特征以及控制流信息图;根据所述函数代码的字符特征、语句特征以及控制流信息图得到函数对应代码的控制依赖图信息、数据依赖图信息;根据所述控制依赖图信息、数据依赖图信息和代码的自身语义信息,构造出代码属性图。3.根据权利要求1所述的软件源代码缺陷检测方法,其特征在于,所述将所述代码属性图输入预设基于图神经网络模型的源代码缺陷检测模型,包括:对所述代码属性图进行节点向量化表示,所述节点向量化表示包括代码向量化和类型向量化;将所述类型向量化输入预设基于图神经网络模型的源代码缺陷检测模型中门控图神经网络层,将代码属性图的所有节点信息表示为一个函数的图表征信息;对所述预设基于图神经网络模型的源代码缺陷检测模型进行参数优化得到所述自适应接收路径;将所述图表征信息输入预设基于图神经网络模型的源代码缺陷检测模型中的所述自适应接收路径得到函数的图表征信息的分类结果,所述分类结果为对应函数代码是否为漏洞。4.根据权利要求3所述的软件源代码缺陷检测方法,其特征在于,所述对所述代码属性图进行向量化表示,包括:使用Word2Vec模型在源代码语料库上进行预训练;预训练好的Word2Vec模型对代码属性图的代码进行向量化得到节点代码向量化;对代码属性图的类型用进行标签编码得到节点类型向量化;将所述节点代码向量化和节点类型向量化进行拼接作为初始节点向量化表示。5.根据权利要求3所述的软件源代码缺陷检测方法,其特征在于,所述对所述预设基于图神经网络模型的源代码缺陷检测模型进...

【专利技术属性】
技术研发人员:叶蔚段富尧谢睿张世琨
申请(专利权)人:北京北大软件工程股份有限公司
类型:发明
国别省市:

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

1