本公开涉及数据分析,尤其涉及一种代码误报验证方法、装置、存储介质与电子设备。
背景技术:
1、在静态代码检测中,由于多方面原因,检测的准确率达不到100%,存在大量误报,如此,需要消耗较多的资源进行代码审计,因此,如何减少静态代码检测的误报亟待解决。
2、目前,通常通过系统配置白名单、用户自选检测缺陷范围等方式对静态代码检测进行一定的事前控制来降低误报,但这种方式的效率较低。
技术实现思路
1、本公开提供一种代码误报验证方法、装置、存储介质与电子设备,以在一定程度上减少静态代码检测的误报。
2、根据本公开的第一方面,提供一种代码误报验证方法,所述方法包括:
3、获取待验证代码检测结果;
4、采用预设验证规则集对所述待验证代码检测结果进行验证,得到第一验证结果;
5、采用机器学习模型对所述待验证代码检测结果进行验证,得到第二验证结果;所述机器学习模型是采用不同待验证代码检测结果以及对应的验证结果训练得到的;
6、根据所述第一验证结果和所述第二验证结果确定最终验证结果。
7、在一种实施方式中,所述采用预设验证规则集对所述待验证代码检测结果进行验证,得到第一验证结果,包括:根据所述待验证代码检测结果对应的缺陷类型,从所述预设验证规则集中确定对应的验证规则;获取所述待验证代码检测结果对应的待验证代码的缺陷所在代码段的参数;采用所述验证规则对所述待验证代码的缺陷所在代码段的参数进行验证,得到所述第一验证结果。
8、在一种实施方式中,所述方法还包括:输出在采用所述验证规则对所述待验证代码的缺陷所在代码段的参数进行验证时产生的中间数据;根据所述待验证代码检测结果以及所述中间数据,生成所述第一验证结果的解释。
9、在一种实施方式中,所述机器学习模型包括依次连接的n个中间层,n为不小于2的正整数;所述采用机器学习模型对所述待验证代码检测结果进行验证,得到第二验证结果,包括:提取所述待验证代码检测结果的特征;将所述待验证代码检测结果及其特征输入所述机器学习模型的第1中间层,采用随机森林算法和极限随机树算法分别对所述待验证代码检测结果及其特征进行处理,得到第1级中间特征;在所述机器学习模型的第i中间层中,采用随机森林算法和极限随机树算法分别对所述待验证代码检测结果及其特征、第1级中间特征至第i-1级中间特征进行处理,得到第i级中间特征;i为2至n中的任意正整数;根据第n级中间特征确定所述第二验证结果。
10、在一种实施方式中,所述方法还包括:对所述最终验证结果进行代码审计,得到审计结果;将所述审计结果反馈至所述机器学习模型,以使所述机器学习模型基于所述审计结果进行优化。
11、在一种实施方式中,所述根据所述第一验证结果和所述第二验证结果确定最终验证结果,包括:在所述第一验证结果和所述第二验证结果均指示误报的情况下,确定所述待验证代码检测结果的最终验证结果为误报。
12、在一种实施方式中,所述待验证代码检测结果包括静态扫描缺陷结果、缺陷类型、函数类型、爆发点位置、函数设置的变量数。
13、根据本公开的第二方面,提供一种代码误报验证装置,所述装置包括:
14、获取模块,被配置为获取待验证代码检测结果;
15、第一验证模块,被配置为采用预设验证规则集对所述待验证代码检测结果进行验证,得到第一验证结果;
16、第二验证模块,被配置为采用机器学习模型对所述待验证代码检测结果进行验证,得到第二验证结果;所述机器学习模型是采用不同待验证代码检测结果以及对应的验证结果训练得到的;
17、确定模块,被配置为根据所述第一验证结果和所述第二验证结果确定最终验证结果。
18、在一种实施方式中,上述第一验证模块,被配置为:根据所述待验证代码检测结果对应的缺陷类型,从所述预设验证规则集中确定对应的验证规则;获取所述待验证代码检测结果对应的待验证代码的缺陷所在代码段的参数;采用所述验证规则对所述待验证代码的缺陷所在代码段的参数进行验证,得到所述第一验证结果。
19、在一种实施方式中,上述第二验证模块,被配置为:输出在采用所述验证规则对所述待验证代码的缺陷所在代码段的参数进行验证时产生的中间数据;根据所述待验证代码检测结果以及所述中间数据,生成所述第一验证结果的解释。
20、在一种实施方式中,所述机器学习模型包括依次连接的n个中间层,n为不小于2的正整数;上述第二验证模块,被配置为:将所述待验证代码检测结果输入所述机器学习模型的第1中间层,采用随机森林算法和极限随机树算法分别对所述待验证代码检测结果进行处理,得到第1级中间特征;在所述机器学习模型的第i中间层中,采用随机森林算法和极限随机树算法分别对所述待验证代码检测结果、第1级中间特征至第i-1级中间特征进行处理,得到第i级中间特征;i为2至n中的任意正整数;根据第n级中间特征确定所述第二验证结果。
21、在一种实施方式中,上述代码误报验证装置还包括审计模块,被配置为:对所述最终验证结果进行代码审计,得到审计结果;将所述审计结果反馈至所述机器学习模型,以使所述机器学习模型基于所述审计结果进行优化。
22、在一种实施方式中,上述确定模块,被配置为:在所述第一验证结果和所述第二验证结果均指示误报的情况下,确定所述待验证代码检测结果的最终验证结果为误报。
23、在一种实施方式中,所述待验证代码检测结果包括静态扫描缺陷结果、缺陷类型、函数类型、爆发点位置、函数设置的变量数。
24、根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面的代码误报验证方法及其可能的实现方式。
25、根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述第一方面的代码误报验证方法及其可能的实现方式。
26、本公开的技术方案具有以下有益效果:
27、本方案中,首先,获取待验证代码检测结果;其次,采用预设验证规则集对待验证代码检测结果进行验证,得到第一验证结果;再次,采用机器学习模型对待验证代码检测结果进行验证,得到第二验证结果;机器学习模型是采用不同代码检测结果以及对应的验证结果训练得到的;最后,根据第一验证结果和第二验证结果确定最终验证结果。一方面,通过预设验证规则集和机器学习模型两种验证方式对待验证代码检测结果进行验证,并根据预设验证规则集和机器学习模型的验证结果确定最终验证结果,例如在第一验证结果和第二验证结果均指示误报的情况下,确定最终验证结果为误报,能够提高最终验证结果的准确性,在一定程度上减少了静态代码检测的误报。另一方面,相较于现有技术中的人工代码审计,提高了代码误报的验证效率。
1.一种代码误报验证方法,其特征在于,包括:
2.根据权利要求1所述的代码误报验证方法,其特征在于,所述采用预设验证规则集对所述待验证代码检测结果进行验证,得到第一验证结果,包括:
3.根据权利要求2所述的代码误报验证方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的代码误报验证方法,其特征在于,所述机器学习模型包括依次连接的n个中间层,n为不小于2的正整数;所述采用机器学习模型对所述待验证代码检测结果进行验证,得到第二验证结果,包括:
5.根据权利要求1所述的代码误报验证方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的代码误报验证方法,其特征在于,所述根据所述第一验证结果和所述第二验证结果确定最终验证结果,包括:
7.根据权利要求1所述的代码误报验证方法,其特征在于,所述待验证代码检测结果包括静态扫描缺陷结果、缺陷类型、函数类型、爆发点位置、函数设置的变量数。
8.一种代码误报验证装置,其特征在于,所述装置包括:
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法。
10.一种电子设备,其特征在于,包括: