主权项 |
一种基于模式的动态漏洞挖据集成系统,其特征在于:依据具体的漏洞模式设计,并采用任务流水机制,集成了动态污点分析、符号执行和模糊测试三种技术;包括动态污点分析模块、约束求解模块、用例选择模块和管理模块;动态污点分析模块使用了动态污点分析技术和符号执行技术,即采用灰盒测试方法,在动态执行程序的过程中考虑了二进制程序的结构,管理模块不断保存新的测试用例,这些测试用例都是对种子测试用例进行变异得到的,将其传递给动态污点分析模块进行测试的过程即使用了模糊测试技术,实现了对二进制程序的自动化测试;在考虑几个模块的集成时,需要分析不同模块核心技术和工具之间的关联性,对不同技术和工具的中间成果进行集成利用,最终将三种动态漏洞挖据技术和相应的工具集成,形成集成系统;动态污点分析模块:结合动态污点分析技术和符号执行技术,将被测试的可执行二进制程序作为此模块的参数,同时标记二进制程序的输入数据为污点数据;执行此模块的过程就是对二进制程序进行动态插桩的过程,通过动态监控二进制程序的执行过程,获得污点数据在二进制程序中的执行轨迹,同时通过控制漏洞模式的配置,依据具体的漏洞模式设计在污染传播的过程中需要标记的操作,从而标记出相应的危险操作,最终将其以符号化的形式输出,得到符号化的污点传播踪迹;另一方面,当目前操作的测试用例执行完成后,管理模块会从测试用例集中选取一个测试用例传递给此模块,继续执行上述操作;约束求解模块:采用STP求解器进行约束求解操作,输入文件是管理模块利用污点分析模块得到的污点传播踪迹文件,包含了二进制程序内部结构和跳转分支的条件信息,然后提取STP求解所需要的约束条件集合,计算相对应的输入符号应满足的条件;管理模块利用得到的约束条件生成新的测试用例,并保存到测试用例集合中;用例选择模块:取出管理模块中保存的约束求解模块中生成的新的测试用例,然后计算每个测试用例相对于之前未被覆盖的代码块的代码覆盖率,为每一个测试用例打分,得分高的测试用例优先执行,并送至管理模块;通过这个优先执行代码覆盖率高的测试用例能够提高测试的代码覆盖率;管理模块:实现动态污点分析模块、约束求解模块和用例选择模块之间的交互,协调模块之间的工作,同时能够保存所有的测试用例,并将能够导致目标可执行二进制程序崩溃的测试用例保存下来,使得触发漏洞的过程能够重现,具体功能实现如下:(1)将测试用例传递给动态污点分析模块,动态污点分析模块执行完成后,将输出的符号化的污点踪迹信息传递回管理模块;(2)将符号化的污点踪迹信息传递给约束求解模块,约束求解模块将约束求解得到的约束条件的计算结果传递回管理模块,管理模块根据这些值生成新的测试用例,保存到测试用例集合中;(3)在测试用例集合中保存所有生成的测试用例,每生成一个新用例,需要通过用例选择模块为其打分,选取测试用例执行时,选择出得分最高的用例;(4)将得分最高的用例继续传递给污点分析过程模块,循环进行后续工作,直到所有生成的测试用例都执行完成。 |