本发明涉及计算机网络,具体提供一种扫描工具预警结果验证方法、装置、电子设备及存储介质。
背景技术:
1、目前,在新能源汽车、充电站等各种电车关联设备上运行了大量的软件应用和系统,他们的代码安全质量对于数字化系统的安全性和稳定性至关重要,而在安全代码开发周期中引入静态代码扫描工具是保障目标代码质量的重要技术手段之一。
2、然而各类静态代码扫描工具产生的错误预警中都包含大量误报,即一个预警有很大的概率不是一个真实的漏洞,这是由于缺乏对于预警位置代码上下文的正确分析所导致的误报。这也是静态工具相比于动态分析工具的一大劣势,对于复杂的项目代码很难构建完整的控制流并进行数据流分析,因此对于局部代码的分析结果无法给出较高的置信度,这使得代码开发测试和安全分析人员都无法直接使用静态分析的结果来作为安全代码研发测试各环节的代码质量评估数据,而是需要人工分析排除误报后再做决定。极大的影响了静态代码扫描工具的实用性,也影响了代码开发、测试、维护以及安全分析人员的工作效率。
3、相应地,本领域需要一种新的扫描工具预警结果验证方案来解决上述问题。
技术实现思路
1、为了克服上述缺陷,提出了本发明,以提供解决或至少部分地解决上述技术问题。本发明提供了一种扫描工具预警结果验证方法、装置、电子设备及存储介质。
2、在第一方面,本发明提供一种扫描工具预警结果的验证方法,所述方法包括:获取静态代码扫描工具输出的静态分析报告;所述静态分析报告中提取漏洞的漏洞类型和漏洞对应的代码位置;基于所述漏洞类型和所述漏洞对应的代码位置确定所述静态分析报告中每个漏洞的漏洞置信度;基于所述漏洞置信度生成漏洞置信度报告。
3、在一个实施方式中,所述基于所述漏洞类型和所述漏洞对应的代码位置确定所述静态分析报告中每个漏洞的漏洞置信度,包括:基于所述漏洞类型和所述漏洞对应的代码位置确定第一测试用例队列中每个测试用例的优先级;基于所述第一测试用例队列和所述测试用例的优先级对目标程序源代码进行测试,得到第一漏洞告警信息;将所述第一漏洞告警信息与所述静态分析报告中的漏洞预警结果进行匹配,得到所述静态分析报告中每个漏洞的漏洞置信度。
4、在一个实施方式中,所述基于所述漏洞类型和所述漏洞对应的代码位置确定第一测试用例队列中每个测试用例的优先级,包括:基于所述目标程序源代码生成控制流图;在编译所述目标程序源代码时,在所述漏洞对应的代码位置添加第一标识,根据所述漏洞类型和所述控制流图对所述漏洞的漏洞关联变量添加第二标识,以及根据所述漏洞类型对所述控制流图上所述漏洞的必经节点添加第三标识;对触发所述第一标识的测试用例给予第一优先级,对触发所述第二标识的测试用例给予第二优先级,对触发所述第三标识的测试用例给予第三优先级。
5、在一个实施方式中,所述基于所述漏洞类型和所述漏洞对应的代码位置确定第一测试用例队列中每个测试用例的优先级,进一步包括:对于所述控制流图中的其他代码位置,计算所述漏洞所在的代码位置到所述其他代码位置之间的距离;基于所述距离确定所述第一测试用例队列中其他测试用例的优先级。
6、在一个实施方式中,所述基于所述目标程序源代码生成控制流图,包括:采用快速类型分析方法对所述目标程序源代码进行分析,生成函数调用图;基于所述函数调用图生成所述控制流图。
7、在一个实施方式中,所述方法还包括:创建针对时序性漏洞的至少一个第二测试用例队列;基于所述至少一个第二测试用例队列中的测试用例对所述时序性漏洞的触发情况确定所述第二测试用例队列中测试用例的优先级;基于所述至少一个第二测试用例队列和所述第二测试用例队列中测试用例的优先级对目标代码源程序进行测试,得到第二漏洞告警信息。
8、在一个实施方式中,所述方法还包括:获取所述漏洞对应的代码位置所在函数内的目标节点集合,其中所述目标节点为从所述静态分析报告中提取的漏洞在所述目标程序源代码中对应的节点;基于控制流图获取所述漏洞对应代码位置的必经节点所在函数的必经节点集合;确定所述目标节点集合和所述必经节点集合的共同节点;基于所述共同节点确定第三测试用例队列中测试用例的优先级;基于所述第三测试用例队列和所述测试用例的优先级对目标程序源代码进行测试,得到第三漏洞告警信息;将所述第三漏洞告警信息与所述静态分析报告中的漏洞预警结果进行匹配,得到所述静态分析报告中漏洞的漏洞置信度。
9、在第二方面,本发明提供一种扫描工具预警结果的验证装置,所述装置包括:
10、获取模块,其被配置为获取静态代码扫描工具输出的静态分析报告;
11、提取模块,其被配置为从所述静态分析报告中提取漏洞的漏洞类型和漏洞对应的代码位置;
12、确定模块,其被配置为基于所述漏洞类型和所述漏洞对应的代码位置确定所述静态分析报告中每个漏洞的漏洞置信度;
13、生成模块,其被配置为基于所述漏洞置信度生成漏洞置信度报告。
14、在第三方面,提供一种电子设备,该电子设备包括至少一个处理器和至少一个存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行前述任一项所述的扫描工具预警结果的验证方法。
15、在第四方面,提供一种计算机可读存储介质,该计算机可读存储介质其中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行前述任一项所述的扫描工具预警结果的验证方法。
16、本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
17、本发明中的扫描工具预警结果验证方法,首先获取静态代码扫描工具输出的静态分析报告,其次从静态分析报告中提取漏洞的漏洞类型和漏洞对应的代码位置,接着基于漏洞类型和漏洞对应的代码位置确定静态分析报告中每个漏洞的漏洞置信度,最后基于漏洞置信度生成漏洞置信度报告。如此,快速有效地实现了对各类错误预警结果的排查验证,提高了对静态代码扫描工具预警结果验证的精度和效率。
1.一种扫描工具预警结果的验证方法,其特征在于,所述方法包括:
2.根据权利要求1所述的扫描工具预警结果的验证方法,其特征在于,所述基于所述漏洞类型和所述漏洞对应的代码位置确定所述静态分析报告中每个漏洞的漏洞置信度,包括:
3.根据权利要求2所述的扫描工具预警结果的验证方法,其特征在于,所述基于所述漏洞类型和所述漏洞对应的代码位置确定第一测试用例队列中每个测试用例的优先级,包括:
4.根据权利要求3所述的扫描工具预警结果的验证方法,其特征在于,所述基于所述漏洞类型和所述漏洞对应的代码位置确定第一测试用例队列中每个测试用例的优先级,进一步包括:
5.根据权利要求3所述的扫描工具预警结果的验证方法,其特征在于,所述基于所述目标程序源代码生成控制流图,包括:
6.根据权利要求1所述的扫描工具预警结果的验证方法,其特征在于,所述方法还包括:
7.根据权利要求1所述的扫描工具预警结果的验证方法,其特征在于,所述方法还包括:
8.一种扫描工具预警结果的验证装置,其特征在于,所述装置包括:
9.一种电子设备,包括至少一个处理器和至少一个存储装置,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行权利要求1至7中任一项所述的扫描工具预警结果的验证方法。
10.一种计算机可读存储介质,其中存储有多条程序代码,其特征在于,所述程序代码适于由处理器加载并运行以执行权利要求1至7中任一项所述的扫描工具预警结果的验证方法。