The invention relates to the field of software system security detection and the field of binary-oriented fuzzy testing in vulnerability mining methods, aiming at providing a binary-oriented oriented fuzzy testing method and system. This method adopts the lightweight static analysis method and the binary source code pile insertion technology. The specific contents include: firstly, extracting the information of comparative instructions that hinder the fuzzy test from penetrating into the program through static analysis, and then inserting the binary file according to the information to get the specific value of the operands in the process of the fuzzy test, and then proceeding to the input file byte by byte. Variation, then infer the dependency between input files and comparison instructions. Finally, according to the dependency and comparison progress information, the document is mutated directively. The system does not depend on program source code, reduces the blindness of mutation in fuzzy testing, saves computing resources and has higher generality.
【技术实现步骤摘要】
一种面向二进制的导向性模糊测试方法与系统
本专利技术涉及软件系统安全性检测领域,尤其涉及是漏洞挖掘技术中的面向二进制的模糊测试领域。
技术介绍
随着计算机的广泛使用以及计算机网络的飞速发展,人们的生活乃至各个行业如金融证券、国防科技、医疗卫生等都离不开各种各样的计算机软件,软件的数量日益增加,相应的软件安全漏洞隐患问题也越发突出。软件安全漏洞隐患为攻击者提供了可乘之机,攻击者利用软件漏洞发起的攻击事件近些年层出不穷。因此尽早发现和修补漏洞成了软件安全研究领域的热点问题。在漏洞挖掘领域中,常用的漏洞挖掘方法包括静态分析、污点分析、符号执行、模糊测试等。静态分析误报率高,随着代码复杂度的日益增加,静态分析难以发现软件中潜在的漏洞,而污点分析效率较低,资源消耗大,符号执行又面临路径爆炸、约束求解困难等问题。相比这些方法,模糊测试自动化程度高、误报率低、原理简单并且可扩展性强,因此这些优点使得模糊测试在漏洞挖掘领域中备受青睐。模糊测试的核心思想是向目标程序输入随机数据并监视程序是否发生崩溃等异常。在实际应用中,很多情况下模糊测试的目标是没有源码的二进制程序,没有程序的内部信息使得模糊测试生成的测试用例因为结构不符合目标程序从而常常使得目标程序在输入文件结构检查阶段就提前终止。当前流行的模糊测试工具采用了遗传算法,并将代码覆盖率作为反馈筛选子代,相比传统的模糊测试该类模糊测试工具提高了模糊测试的效率,但是该类工具仍然存在存一定的局限性,如不知道输入文件中哪些字节值得变异,输入文件中的字节应该如何去变异,所以会经常耗费大量时间去变异一些无关紧要的字节,即使有些时候变异 ...
【技术保护点】
1.一种面向二进制的导向性模糊测试方法,其特征在于,所述方法包括如下步骤:A、对目标二进制文件进行静态分析,筛选目标二进制程序中所包含的比较指令并提取比较指令的详细信息;B、对目标二进制文件进行插桩以在模糊测试中获取指令中操作数的具体值;C、通过操作数的具体值收集比较进度信息;D、变异输入文件,推测当前输入文件中的字节与比较指令之间的依赖关系;E、在模糊测试过程中根据依赖关系对当前输入文件进行变异引导。
【技术特征摘要】
1.一种面向二进制的导向性模糊测试方法,其特征在于,所述方法包括如下步骤:A、对目标二进制文件进行静态分析,筛选目标二进制程序中所包含的比较指令并提取比较指令的详细信息;B、对目标二进制文件进行插桩以在模糊测试中获取指令中操作数的具体值;C、通过操作数的具体值收集比较进度信息;D、变异输入文件,推测当前输入文件中的字节与比较指令之间的依赖关系;E、在模糊测试过程中根据依赖关系对当前输入文件进行变异引导。2.根据权利要求1所述的一种面向二进制的导向性模糊测试方法,其特征在于,所述的步骤A进一步包括如下步骤:A1、对目标二进制文件进行反汇编,将程序转为汇编代码,分析汇编代码中含有的比较指令;A2、根据筛选规则对比较指令进行筛选过滤;A3、根据A2步骤中所得到的比较指令提取比较指令中操作数长度及比较指令的地址信息。3.根据权利要求2所述的一种面向二进制的导向性模糊测试方法,其特征在于,步骤A1中的比较指令具体是指:目标程序中含有的诸如cmp、strncmp、memcmp等对操作数进行比较的指令。目标程序通常会通过比较指令来对输入文件的格式进行检查校验,如果检查校验失败,则程序会提前终止,从而导致模糊测试无法发现程序代码深处所潜在的漏洞,因此本方法主要关注该类指令。4.根据权利要求2所述的一种面向二进制的导向性模糊测试方法,其特征在于,步骤A2中的筛选规则具体是指:筛选出在模糊测试过程中常用的模糊测试方法难以绕过的比较指令。如果比较指令中操作数的长度为1个字节,则忽略该比较指令;如果比较指令中操作数是与立即值0或立即值0xFFFFFFFFh进行比较,则忽略该比较指令。5.根据权利要求1所述的一种面向二进制的导向性模糊测试方法,其特征在于,所述的步骤B进一步包括如下步骤:B1、判断比较指令中操作数的类型;B2、根据插桩规则对目标二进制文件插桩以便在模糊测试中目标程序运行时获取操作数的具体值。6.根据权利要求5所述的一种面向二进制的导向性模糊测试方法,其特征在于,步骤B2中的插桩规则具体是指:如果操作数属于内存引用类型则应记录相应内存中的内容,其他类型如寄存器、立即值则记录操作数的对应值。7.根据权利要求1所述的一种面向二进制的导向性模糊测试方法,其特征在于,步骤C中的比较进度具体是指:根据获取到的操作数具体值对同一条指令中的两个操作数...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。