System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,特别是指一种代码漏洞检测方法、装置及电子设备。
技术介绍
1、源代码的缺陷检测是软件安全领域的关键环节,传统的检测方法往往依赖于大量的人工审查,既耗时又成本高昂。近年来,随着深度学习技术的发展,特别是自然语言处理领域的进步,利用深度学习模型进行代码漏洞检测已成为研究热点。
2、相关技术中,通常将源代码处理视为特殊自然语言处理,但这一方案检测精度较低。
技术实现思路
1、本专利技术的目的是提供一种代码漏洞检测方法、装置及电子设备,解决了现有的代码漏洞检测方案精度较低的问题。
2、为达到上述目的,本专利技术的实施例提供一种代码漏洞检测方法,包括:
3、将源代码的抽象语法树输入至第一网络模型,输出所述源代码的语法结构信息对应的第一特征表示;
4、将所述源代码、源代码注释和所述源代码的变量序列输入至第二网络模型,输出所述源代码的语义信息对应的第二特征表示;其中,所述第二网络模型中的目标超参数组合是基于自适应网格搜索算法确定的;
5、根据所述第一特征表示和所述第二特征表示,检测所述源代码是否存在漏洞。
6、可选地,基于网格搜索算法确定所述目标超参数组合的方法包括:
7、重复执行以下步骤,直至确定出所述目标超参数组合:
8、在搜索网格中的每个网格点上进行模型训练,得到每个网格点的性能指标;其中,所述搜索网格是由多个超参数的不同取值组合而形成的一个多维空间,每个维度包括一个超参数
9、根据相邻网格点的所述性能指标更新所述搜索网格。
10、可选地,所述根据相邻网格点的所述性能指标更新所述搜索网格,包括:
11、根据相邻网格点的所述性能指标,确定性能梯度;
12、在所述性能梯度的绝对值大于或等于第一预设梯度阈值的情况下,细分所述相邻网格点所在的网格区域;
13、在所述性能梯度的绝对值大于或等于第二预设梯度阈值且小于第一预设梯度阈值的情况下,合并所述相邻网格点;
14、在所述性能梯度的绝对值小于所述第二预设梯度阈值的情况下,停止更新所述搜索网格。
15、可选地,所述将源代码的抽象语法树输入至第一网络模型之前,所述方法还包括:
16、识别所述抽象语法树中的相邻代码标记;
17、用自然代码序列ncs边连接所述相邻代码标记,并为每个函数节点添加代码度量指标,得到增强的抽象语法树;
18、将所述增强的抽象语法树输入至所述第一网络模型,输出所述第一特征表示。
19、可选地,所述代码度量指标包括以下至少一项:函数复杂度、耦合度和内聚性。
20、可选地,所述第一网络模型包括:依次连接的编码层、递归神经网络rnn层和池化层;
21、所述编码层用于将所述抽象语法树中包括的一系列的表达式子树转化为一系列的第一子特征表示;
22、所述rnn层采用双向gru对所述第一子特征表示进行处理,得到一系列的第二子特征表示;
23、利用注意力机制,在所述第二子特征表示中融合函数节点对应的位置信息,得到一系列第三子特征表示;
24、所述池化层用于对一系列的所述第三子特征表示进行最大池化处理,得到所述第一特征表示。
25、为达到上述目的,本专利技术的实施例提供一种代码漏洞检测装置,包括:
26、第一处理模块,用于将源代码的抽象语法树输入至第一网络模型,输出所述源代码的语法结构信息对应的第一特征表示;
27、第二处理模块,用于将所述源代码、源代码注释和所述源代码的变量序列输入至第二网络模型,输出所述源代码的语义信息对应的第二特征表示;其中,所述第二网络模型中的目标超参数组合是基于自适应网格搜索算法确定的;
28、第三处理模块,用于根据所述第一特征表示和所述第二特征表示,检测所述源代码是否存在漏洞。
29、为达到上述目的,本专利技术的实施例提供一种电子设备,包括:收发机和处理器;所述处理器用于:
30、将源代码的抽象语法树输入至第一网络模型,输出所述源代码的语法结构信息对应的第一特征表示;
31、将所述源代码、源代码注释和所述源代码的变量序列输入至第二网络模型,输出所述源代码的语义信息对应的第二特征表示;其中,所述第二网络模型中的目标超参数组合是基于自适应网格搜索算法确定的;
32、根据所述第一特征表示和所述第二特征表示,检测所述源代码是否存在漏洞。
33、为达到上述目的,本专利技术的实施例提供一种电子设备,包括:收发器、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令;所述处理器执行所述程序或指令时实现如上所述的代码漏洞检测方法。
34、为达到上述目的,本专利技术的实施例提供一种可读存储介质,其上存储有程序或指令,所述程序或指令被处理器执行时实现如上所述的代码漏洞检测方法中的步骤。
35、为达到上述目的,本专利技术的实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如上所述的代码漏洞检测方法的步骤。
36、本专利技术的上述技术方案的有益效果如下:
37、本专利技术实施例的方法,将源代码的抽象语法树输入至第一网络模型,输出所述源代码的语法结构信息对应的第一特征表示;将所述源代码、源代码注释和所述源代码的变量序列输入至第二网络模型,输出所述源代码的语义信息对应的第二特征表示;其中,所述第二网络模型中的目标超参数组合是基于自适应网格搜索算法确定的;根据所述第一特征表示和所述第二特征表示,检测所述源代码是否存在漏洞。如此,在代码漏洞检测过程中,结合了源代码的语法结构特征表示和语义信息特征表示,将两种特征表示相结合,使得检测方法能够同时考虑到代码的语法和语义信息,提高了代码漏洞检测的准确性。而且,基于自适应网格搜索算法确定的第二网络模型中的目标超参数组合,实现通过动态地调整网格的划分,能够提高搜索效率和精度,减小计算量。
本文档来自技高网...【技术保护点】
1.一种代码漏洞检测方法,其特征在于,包括:
2.根据权利要求1所述的代码漏洞检测方法,其特征在于,基于自适应网格搜索算法确定所述目标超参数组合的方法包括:
3.根据权利要求2所述的代码漏洞检测方法,其特征在于,所述根据相邻网格点的所述性能指标更新所述搜索网格,包括:
4.根据权利要求1所述的代码漏洞检测方法,其特征在于,所述将源代码的抽象语法树输入至第一网络模型之前,所述方法还包括:
5.根据权利要求4所述的代码漏洞检测方法,其特征在于,所述代码度量指标包括以下至少一项:函数复杂度、耦合度和内聚性。
6.根据权利要求1所述的代码漏洞检测方法,其特征在于,所述第一网络模型包括:依次连接的编码层、递归神经网络RNN层和池化层;
7.一种代码漏洞检测装置,其特征在于,包括:
8.一种电子设备,其特征在于,包括:收发机和处理器;所述处理器用于:
9.一种电子设备,包括:收发器、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令;其特征在于,所述处理器执行所述程序或指令时实现
10.一种可读存储介质,其上存储有程序或指令,其特征在于,所述程序或指令被处理器执行时实现如权利要求1-6任一项所述的代码漏洞检测方法中的步骤。
11.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令被处理器执行时实现如权利要求1至6中任一项所述代码漏洞检测方法的步骤。
...【技术特征摘要】
1.一种代码漏洞检测方法,其特征在于,包括:
2.根据权利要求1所述的代码漏洞检测方法,其特征在于,基于自适应网格搜索算法确定所述目标超参数组合的方法包括:
3.根据权利要求2所述的代码漏洞检测方法,其特征在于,所述根据相邻网格点的所述性能指标更新所述搜索网格,包括:
4.根据权利要求1所述的代码漏洞检测方法,其特征在于,所述将源代码的抽象语法树输入至第一网络模型之前,所述方法还包括:
5.根据权利要求4所述的代码漏洞检测方法,其特征在于,所述代码度量指标包括以下至少一项:函数复杂度、耦合度和内聚性。
6.根据权利要求1所述的代码漏洞检测方法,其特征在于,所述第一网络模型包括:依次连接的编码层、递归神经网络r...
【专利技术属性】
技术研发人员:朱凤婷,
申请(专利权)人:中移苏州软件技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。