一种二进制程序漏洞的挖掘装置和方法制造方法及图纸

技术编号:7630886 阅读:228 留言:0更新日期:2012-08-03 18:08
一种融合遗传算法与动态污染跟踪的二进制程序漏洞的挖掘装置与方法,该装置设有顺序连接的静态分析模块、调试器模块、遗传算法模块、测试输入生成模块和异常监控模块,以及位于调试器模块、遗传算法模块之间的动态污染跟踪模块;该装置利用遗传算法的适应度函数指导生成测试用例,设计了多目标的适应度函数,从定量角度评价测试用例的好坏;再用动态污染跟踪识别出输入文件中的关键字节,缩小遗传算法的搜索空间。该装置结合遗传算法和动态污染跟踪两者优点,指导生成测试用例,故生成的测试用例针对性强,生成的测试数据准确度和效率都高,且把定性分析与定量计算相结合,避免了基于符号执行与约束求解技术的二进制程序测试中的路径爆炸问题。

【技术实现步骤摘要】

本专利技术涉及一种软件安全技术,确切地说,涉及ー种融合遗传算法与动态污染跟踪的ニ进制程序漏洞的挖掘装置和方法,属于ニ进制程序安全漏洞检测的

技术介绍
目前,在软件安全研究领域中,经常会对ニ进制程序进行安全分析,在安全分析过程中的ー个重要问题是如 何快速生成有针对性的测试用例,用于触发ニ进制程序中可能存在的安全漏洞。现在,工程产业界普遍采用的方法是模糊测试Fuzz Testing(又称为随机数黑盒暴力测试法)。Fuzz Testing能够自动产生测试数据,测试结果准确,适用范围广;但是,生成测试输入文件的路径覆盖率较低,且生成的测试用例多指向同一路径,在测试输入文件的生成过程中缺乏引导性,效率低,缺少测试输入文件和程序异常之间的关联关系,对人工的依赖较大,实施过程中的不确定因素也较多。目前的ニ进制程序漏洞挖掘或检测技术可以分为两类静态和动态,其中动态方法是首先对ニ进制程序的输入文件进行变异,然后加载该输入文件,并通过监控被测试ニ进制程序的执行过程来检测该输入文件是否会导致被测试ニ进制程序的崩溃。动态方法大都基于符号执行技术与约束求解技木,因此,导致ニ进制程序漏洞检测的效率依赖于符号执行技术的精确度和约束求解器的求解能力。如果被测试的ニ进制程序含有复杂的条件分支和深度嵌套的循环,则由输入文件导致的ニ进制程序的执行路径会非常长。为了避免由符号执行和约束求解技术带来昂贵的计算代价,基于符号执行和约束求解的漏洞挖掘技术通常仅遍历循环内部的分支一次,或者把循环展开设定的次数(通常只展开一次)。这种为了节约计算上的代价而盲目截断循环的结果,是很可能漏掉ー些重要的路径,而这些路径上就很可能包含潜在的安全漏洞。静态方法不运行被测试ニ进制程序,因此不能获取关于ニ进制程序运行过程中的相关信息,由此导致大多数的ニ进制程序的静态分析方法误报率较高,如Splint有将近50%的误报率,Flawfinder和RATS也都有较高的误报率。随着软件规模的増加,软件中的条件分支和循环的数目也呈现出不可避免的增长趋势。ニ进制程序中的复杂的条件分支和深度嵌套的循环导致了严重的路径爆炸问题。而且,程序的输入空间非常大,而能够被恶意用户控制的空间又非常小。上述这些原因都増加了ニ进制程序漏洞挖掘的难度。综合上述,目前,主流的静态分析技术和动态分析技术存在下述问题(I)基于符号执行与约束求解的动态的ニ进制程序漏洞挖掘技术面临昂贵的计算代价。(2)基于符号执行与约束求解的动态的ニ进制程序漏洞挖掘技术在搜集ニ进制程序执行路径的约束条件时存在不完备性问题,而且,目前的约束求解器很难对复杂的非线性约束条件求解获得其精确解。(3)基于符号执行与约束求解的动态的ニ进制程序漏洞挖掘技木通常会盲目地截断循环,从而很容易漏掉一些可能包含漏洞的程序路径。(4)基于Fuzzing的动态测试自动生成的测试用例具有盲目性,生成的大量测试用例都指向同一路径,缺乏指导性,其触发二进制程序中潜在的安全漏洞的效率低。(5)静态分析的效率较高,且其分析属于路径敏感的。但是,其理论上存在较高的漏报率和 误报率,难于准确定位漏洞。而且,静态分析大多需要在源代码基础上进行分析,针对二进制程序的静态符号执行技术也比较复杂,计算代价昂贵。因此,如何融合静态分析技术与动态分析技术的两者优点,实现自动化的二进制程序漏洞挖掘,并提高二进制程序漏洞的挖掘效率,已经成为目前软件安全领域内的一个重要的研究课题。
技术实现思路
有鉴于此,本专利技术的目的是提供一种融合遗传算法与动态污染跟踪的二进制程序漏洞挖掘的装置与方法,本专利技术利用遗传算法的适应度函数来指导测试用例的生成,同时利用动态污染跟踪模块来缩小遗传算法的搜索空间,加快遗传算法的收敛速度,从而提高二进制程序漏洞挖掘的效率和精确度。为了达到上述目的,本专利技术提供了一种融合遗传算法与动态污染跟踪的二进制程序漏洞的挖掘装置,其特征在于所述装置设有顺序连接的静态分析模块、调试器模块、遗传算法模块、测试输入生成模块和异常监控模块,以及位于调试器模块、遗传算法模块之间的动态污染跟踪模块;其中静态分析模块,基于交互式反汇编器专业版IDAPro (Interactive DisassemblerProfessional)开发实现的该模块用于提取被测试的二进制程序中的控制流结构、基本块的起始地址和危险函数的调用地址,并将这些信息传送给调试器模块作为配置信息;即该模块通过分析二进制程序中的跳转指令,获取二进制程序基本块的起始地址和基本块之间的跳转关系;然后利用IDAPix)提供的库函数获取二进制程序中的危险函数的调用地址;调试器模块,作为该装置的基础平台,用于监控被测试二进制程序的执行过程,并记录相关信息根据静态分析模块提供的配置信息,识别和拦截Windows底层的应用程序编程接口 API (Application Programming Interface)函数,获取被测试二进制程序打开输入文件的位置和记录由输入文件导致的被测试二进制程序执行过的基本块、输入文件对应的被测试二进制程序的执行轨迹及该被测试二进制程序中危险函数的执行次数;读取二进制程序中寄存器和堆栈内的数据,计算并更新二进制程序中的寄存器变量和内存变量的数值;实现对给定的内存地址对被测试二进制程序下断点的功能;然后调试器模块将上述计算获取的信息传送给遗传算法模块,用于计算输入文件对应的适应度函数值;动态污染跟踪模块,用于实现单字节水平细粒度的动态污染跟踪,识别被测试二进制程序对应的输入文件中的关键字节,并将该关键字节作为遗传算法模块交叉和变异的空间,提高遗传算法的收敛速度该模块为被测试二进制程序的输入数据中每个字节都赋予一个唯一标签,再跟踪该标签在被测试二进制程序中的传递过程;且在跟踪输入数据传递过程中,既考虑数据间的传递依赖关系,也考虑不同变量间的控制依赖关系;同时识别被测试二进制程序对应的输入文件中的关键字节,并把关键字节信息提供给遗传算法模块,用作遗传算法模块的交叉和变异的空间;遗传算法模块,负责根据调试器模块提供的包括每个输入文件所覆盖被测试ニ进制程序的基本块与其对应的ニ进制程序执行轨迹和其中危险函数的执行次数,以及动态污染跟踪模块识别出来的关键字节,计算每个输入文件对应的被测试ニ进制程序的基本块覆盖率、最小执行路径信息和该输入文件对应的危险函数的执行次数,然后计算每个输入文件对应的适应度函数值,并将该适应度函数值传递给测试输入生成模块,用于生成新的输入文件而进行下一轮测试;而且,如果输入文件对应的适应度函数值较高,则输入文件可能导致被测试ニ进制程序覆盖的基本块较多、导致被测试ニ进制程序的执行路径为“稀少路径”或导致被测试ニ进制程序执行的危险函数次数较多;当输入文件的上述三个数值都较高时,该输入文件就非常可能触发其对应的被测试ニ进制程序潜在的安全漏洞;测试输入生成模块,负责根据来自遗传算法模块的每个输入文件对应的适应度函数值的大小对被测试ニ进制程序的输入文件进行排序,然后根据用户设置的規模,选择适应度函数值高的输入文件送至调试器模块进行下一轮测试,因适应度函数值高的输入文件更容易触发被测试ニ进制程序潜在的安全漏洞;异常监控模块,用于监控每个输入文件中的被测试ニ进制程序的执行过程,若出现本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:崔宝江梁晓兵
申请(专利权)人:北京邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术