本发明涉及网络安全,尤其涉及一种基于触发数据污点推断的缺陷关键路径点提取方法和装置。
背景技术:
1、历史上已经曝光并被修复的缺陷所在的代码模块,存在一定的概率会再次出现安全缺陷,称为区域性再现缺陷。由于部分开发者在对缺陷进行修复时,基于程序崩溃时的堆栈跟踪信息进行调试,仅对导致崩溃的变量进行表层限制,如对变量长度进行约束,以此来阻止程序的崩溃行为。然而,这种处理方式没有深入挖掘和分析缺陷的成因,未能彻底理解缺陷的深层次逻辑和数据流特性。现有的定向模糊测试方法对缺陷演化过程和成因关注不足,针对区域再现缺陷挖掘难度大。现有的模糊测试方法缺乏对缺陷的引入和修复历程以及缺陷成因的关注,对区域再现缺陷的挖掘缺乏结合历史缺陷成因分析的线索指引方法,导致这难以被及时发现。
技术实现思路
1、本发明针对现有的定向模糊测试方法对缺陷的成因和演变过程缺乏关注,难以发现区域再现缺陷的问题,提出一种基于触发数据污点推断的缺陷关键路径点提取方法和装置,通过分组污点推断指导生成与历史缺陷poc(漏洞验证程序)执行路径相似的崩溃测试用例和非崩溃测试用例,分析两组测试用例的执行路径差异并计算执行路径中代码的缺陷相关性评分,获取缺陷成因关键路径点,为导向性模糊测试提供线索指引。
2、为了实现上述目的,本发明采用以下技术方案:
3、本发明一方面提出一种基于触发数据污点推断的缺陷关键路径点提取方法,包括:
4、步骤1:收集历史缺陷对应的缺陷触发poc和对应版本的源代码,采用二进制插桩,跟踪测试用例执行,同时记录测试用例是否触发程序崩溃状态;
5、步骤2:对每个历史缺陷,将每一个缺陷对应的poc作为初始种子集,采用字节污点推断识别并固定与崩溃路径相关的关键字节,变异其他字节,得到包含崩溃测试用例和非崩溃测试用例的一组测试套件;
6、步骤3:将测试套件中的测试用例在原始程序中执行,收集崩溃和非崩溃路径信息,计算代码行粒度的缺陷相关性评分,保留相关性得分较高的程序代码作为历史缺陷关键路径点。
7、进一步地,所述步骤2中,通过所述字节污点推断识别的关系包括变量依赖关系和分支依赖关系。
8、进一步地,所述步骤3中,按照以下方式计算代码行粒度的缺陷相关性评分:
9、
10、其中vulnerability_score表示分支点bi的缺陷相关性评分,#(xi=1λc=1)表示观察到bi并触发缺陷的测试用例数量,#(xi=0λc=0)表示未观察到bi且未触发缺陷的测试用例数量,#(c=1)表示触发缺陷的测试用例数量,#(c=0)表示未触发缺陷的测试用例数量。
11、进一步地,所述步骤3中,在计算代码行粒度的缺陷相关性评分之前,还包括:
12、删除重复的执行路径。
13、本发明另一方面提出一种基于触发数据污点推断的缺陷关键路径点提取装置,包括:
14、执行路径跟踪模块,用于收集历史缺陷对应的缺陷触发poc和对应版本的源代码,采用二进制插桩,跟踪测试用例执行,同时记录测试用例是否触发程序崩溃状态;
15、污点推断模块,用于对每个历史缺陷,将每一个缺陷对应的poc作为初始种子集,采用字节污点推断识别并固定与崩溃路径相关的关键字节,变异其他字节,得到包含崩溃测试用例和非崩溃测试用例的一组测试套件;
16、缺陷关键路径点提取模块,用于将测试套件中的测试用例在原始程序中执行,收集崩溃和非崩溃路径信息,计算代码行粒度的缺陷相关性评分,保留相关性得分较高的程序代码作为历史缺陷关键路径点。
17、进一步地,所述污点推断模块中,通过所述字节污点推断识别的关系包括变量依赖关系和分支依赖关系。
18、进一步地,所述缺陷关键路径点提取模块中,按照以下方式计算代码行粒度的缺陷相关性评分:
19、
20、其中vulnerability_score表示分支点bi的缺陷相关性评分,#(xi=1λc=1)表示观察到bi并触发缺陷的测试用例数量,#(xi=0λc=0)表示未观察到bi且未触发缺陷的测试用例数量,#(c=1)表示触发缺陷的测试用例数量,#(c=0)表示未触发缺陷的测试用例数量。
21、进一步地,所述缺陷关键路径点提取模块中,在计算代码行粒度的缺陷相关性评分之前,还包括:
22、删除重复的执行路径。
23、与现有技术相比,本发明具有的有益效果:
24、成因存在较深的程序逻辑,常规的通过模糊测试生成的测试用例可能较早偏离了poc的执行路径,无法观察到深层路径。本发明通过污点推断,固定路径序列前端的控制流相关的字节,能够在到达触发路径序列较深位置的前提下进行变异,获得与历史缺陷触发数据执行路径相似的崩溃测试用例和非崩溃测试用例。进一步通过有效分析测试用例的执行路径差异并计算执行路径中代码的缺陷相关性评分,获取缺陷成因关键路径点,在此基础上,有利于实现缺陷线索的提取。
1.一种基于触发数据污点推断的缺陷关键路径点提取方法,其特征在于,包括:
2.根据权利要求1所述的一种基于触发数据污点推断的缺陷关键路径点提取方法,其特征在于,所述步骤2中,通过所述字节污点推断识别的关系包括变量依赖关系和分支依赖关系。
3.根据权利要求1所述的一种基于触发数据污点推断的缺陷关键路径点提取方法,其特征在于,所述步骤3中,按照以下方式计算代码行粒度的缺陷相关性评分:
4.根据权利要求1所述的一种基于触发数据污点推断的缺陷关键路径点提取方法,其特征在于,所述步骤3中,在计算代码行粒度的缺陷相关性评分之前,还包括:
5.一种基于触发数据污点推断的缺陷关键路径点提取装置,其特征在于,包括:
6.根据权利要求5所述的一种基于触发数据污点推断的缺陷关键路径点提取装置,其特征在于,所述污点推断模块中,通过所述字节污点推断识别的关系包括变量依赖关系和分支依赖关系。
7.根据权利要求5所述的一种基于触发数据污点推断的缺陷关键路径点提取装置,其特征在于,所述缺陷关键路径点提取模块中,按照以下方式计算代码行粒度的缺陷相关性评分:
8.根据权利要求5所述的一种基于触发数据污点推断的缺陷关键路径点提取装置,其特征在于,所述缺陷关键路径点提取模块中,在计算代码行粒度的缺陷相关性评分之前,还包括: