System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及计算机,具体而言,涉及一种代码漏洞检测方法、装置、计算机设备及存储介质。
技术介绍
1、随着信息技术的飞速发展和广泛应用,软件在各个领域中扮演着越来越重要的角色。然而,软件中的漏洞问题也日益凸显,成为信息安全的重要威胁。在众多软件漏洞中,一些代码程序漏洞,尤其是二进制代码程序漏洞因其隐蔽性和复杂性,难以被传统检测方法发现和理解。因此,如何对代码程序的漏洞进行检测是值得关注的问题。
技术实现思路
1、本公开实施例至少提供一种代码漏洞检测方法、装置、计算机设备及存储介质。
2、第一方面,本公开实施例提供了一种代码漏洞检测方法,包括:
3、按照待检测代码包含的函数,对所述待检测代码进行划分,得到各个函数对应的代码片段;
4、确定各个代码片段之间的控制依赖关系、各个代码片段中包含的变量之间的数据依赖关系,以及所述待检测代码的上下文依赖关系;
5、针对各个代码片段,根据所述控制依赖关系、所述数据依赖关系以及所述待检测代码的上下文依赖关系,对所述代码片段进行第一特征提取,得到所述代码片段的结构特征信息;针对各个代码片段,对所述代码片段进行图像转化处理,得到所述代码片段对应的图像信息,并对所述代码片段对应的图像信息进行第二特征提取,得到所述代码片段的顺序特征信息;针对各个代码片段,对所述代码片段进行第三特征提取,得到所述代码片段的时序特征信息;
6、分别对各个代码片段的所述结构特征信息、所述顺序特征信息和所述时序特征信息进行特
7、分别将各个代码片段的融合特征信息输入至训练好的漏洞检测模型中,得到各个代码片段的漏洞检测结果。
8、一种可选的实施方式中,确定所述待检测代码的上下文依赖关系,包括:
9、针对每个代码片段,分别对所述代码片段中包含的变量和语句进行特征表示,得到变量特征向量和语句特征向量;
10、针对各个变量,确定与该变量的变量特征向量具有关联关系的目标语句特征向量,并将所述目标语句特征向量对应的语句进行聚合,生成该变量对应的代码切片;
11、将所述代码切片输入至训练好的自监督学习模型中,输出所述待检测代码的上下文依赖关系。
12、一种可选的实施方式中,针对各个变量,确定与该变量的变量特征向量具有关联关系的目标语句特征向量,并将所述目标语句特征向量对应的语句进行聚合,生成该变量对应的代码切片,包括:
13、针对各个变量,分别将该变量的变量特征向量和各个语句特征向量输入至前向多层感知机模型中,得到各个语句特征向量与所述变量特征向量的第一关联分数值;以及,分别将该变量的变量特征向量和各个语句特征向量输入至后向多层感知机模型中,得到各个语句特征向量与所述变量特征向量的第二关联分数值;
14、将第一关联分数值超过第一阈值的语句特征向量作为第一目标语句特征向量;以及,将第二关联分数值超过第二阈值的语句特征向量作为第二目标语句特征向量;
15、对所述第一目标语句特征向量对应的语句进行聚合,生成该变量对应的前向代码切片;以及,对所述第二目标语句特征向量对应的语句进行聚合,生成该变量对应的后向代码切片。
16、一种可选的实施方式中,所述训练好的自监督学习模型是通过以下步骤训练得到的:
17、获取正常代码切片,并利用所述正常代码切片,生成部分遮掩的代码切片和变异代码切片;
18、将所述正常代码切片和部分遮掩的代码切片输入至未训练好的自监督学习模型中,生成复原代码切片;根据所述复原代码切片和所述正常代码切片,确定第一损失信息;
19、将所述正常代码切片和所述变异代码切片输入至未训练好的自监督学习模型中,确定所述正常代码切片和所述变异代码切片的相似度;基于所述相似度,确定第二损失信息;
20、将所述正常代码切片和所述变异代码切片输入至未训练好的自监督学习模型中,对所述变异代码切片进行恢复,得到恢复后的代码切片;根据所述恢复后的代码切片和所述正常代码切片,确定第三损失信息;
21、根据所述第一损失信息、所述第二损失信息和所述第三损失信息,对所述待训练的自监督学习模型中的参数进行调整,得到训练好的自监督学习模型。
22、一种可选的实施方式中,针对各个代码片段,根据所述控制依赖关系、所述数据依赖关系以及所述待检测代码的上下文依赖关系,对所述代码片段进行第一特征提取,得到所述代码片段的结构特征信息,包括:
23、根据各个代码片段对应的控制依赖关系,构建控制依赖图;所述控制依赖图中包含的节点为代码片段;所述控制依赖图中包含的节点之间的边为代码片段之间的跳转或者调用关系;
24、根据各个代码片段包含的变量之间的数据依赖关系,构建数据依赖图;所述数据依赖图中包含的节点为代码片段中的变量;所述数据依赖图中包含的节点的边为变量的使用关系;
25、根据所述控制依赖图、所述数据依赖图以及所述待检测代码的上下文依赖关系,生成程序依赖图;
26、根据所述程序依赖图,对各个代码片段进行第一特征提取,得到各个代码片段的结构特征信息。
27、一种可选的实施方式中,分别将各个代码片段的融合特征信息输入至训练好的漏洞检测模型中,得到各个代码片段的漏洞检测结果,包括:
28、针对各个代码片段,将所述代码片段的融合特征信息和标注漏洞类型的参考代码片段的融合特征信息输入至训练好的漏洞检测模型中,得到所述代码片段与所述参考代码片段之间的相似度;
29、将相似度大于设定阈值的参考代码片段作为目标参考片段,并根据所述目标参考片段的标注漏洞类型,确定所述代码片段的漏洞检测结果。
30、一种可选的实施方式中,所述训练好的漏洞检测模型是按照以下步骤训练得到的:
31、获取漏洞类型相同的第一代码片段对和漏洞类型不相同的第二代码片段对;
32、将所述第一代码片段对分别对应的融合特征向量输入至未训练好的漏洞检测模型中,得到所述第一代码片段对中的两个代码片段分别对应的第一特征嵌入向量和第二特征嵌入向量;以及,将所述第二代码片段对输入至未训练好的漏洞检测模型中,得到所述第二代码片段对中的两个代码片段分别对应的第三特征嵌入向量和第四特征嵌入向量;
33、根据所述第一特征嵌入向量和所述第二特征嵌入向量,确定第一欧式距离;以及,根据所述第三特征嵌入向量和所述第四特征嵌入向量,确定第二欧式距离;
34、根据所述第一欧式距离,确定所述第一代码片段对中的两个代码片段对应的第一相似度;以及根据所述第二欧式距离,确定所述第二代码片段对中的两个代码片段对应的第二相似度;
35、根据所述第一相似度和所述第二相似度,确定对比损失信息;
36、根据所述对比损失信息,对未训练好的漏洞检测模型的参数进行调整,得到训练好的漏洞检测模型。
37、第二方面本文档来自技高网...
【技术保护点】
1.一种代码漏洞检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,确定所述待检测代码的上下文依赖关系,包括:
3.根据权利要求2所述的方法,其特征在于,针对各个变量,确定与该变量的变量特征向量具有关联关系的目标语句特征向量,并将所述目标语句特征向量对应的语句进行聚合,生成该变量对应的代码切片,包括:
4.根据权利要求2或3所述的方法,其特征在于,所述训练好的自监督学习模型是通过以下步骤训练得到的:
5.根据权利要求1所述的方法,其特征在于,针对各个代码片段,根据所述控制依赖关系、所述数据依赖关系以及所述待检测代码的上下文依赖关系,对所述代码片段进行第一特征提取,得到所述代码片段的结构特征信息,包括:
6.根据权利要求1所述的方法,其特征在于,分别将各个代码片段的融合特征信息输入至训练好的漏洞检测模型中,得到各个代码片段的漏洞检测结果,包括:
7.根据权利要求1所述的方法,其特征在于,所述训练好的漏洞检测模型是按照以下步骤训练得到的:
8.一种代码漏洞检测装置,其特征在于,包括
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一项所述的代码漏洞检测方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一项所述的代码漏洞检测方法的步骤。
...【技术特征摘要】
1.一种代码漏洞检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,确定所述待检测代码的上下文依赖关系,包括:
3.根据权利要求2所述的方法,其特征在于,针对各个变量,确定与该变量的变量特征向量具有关联关系的目标语句特征向量,并将所述目标语句特征向量对应的语句进行聚合,生成该变量对应的代码切片,包括:
4.根据权利要求2或3所述的方法,其特征在于,所述训练好的自监督学习模型是通过以下步骤训练得到的:
5.根据权利要求1所述的方法,其特征在于,针对各个代码片段,根据所述控制依赖关系、所述数据依赖关系以及所述待检测代码的上下文依赖关系,对所述代码片段进行第一特征提取,得到所述代码片段的结构特征信息,包括:
6.根据权利要求1所述的方法,其特...
【专利技术属性】
技术研发人员:苑舒斌,刘晨昱,施建衡,韩宇,周晓宇,刘欣宇,张开,
申请(专利权)人:中海油信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。