[发明专利]基于二进制程序的漏洞挖掘方法及装置在审
申请号: | 201310314639.2 | 申请日: | 2013-07-24 |
公开(公告)号: | CN104346542A | 公开(公告)日: | 2015-02-11 |
发明(设计)人: | 樊兴华 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 苏培华 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 二进制 程序 漏洞 挖掘 方法 装置 | ||
技术领域
本申请涉及应用程序漏洞挖掘技术领域,特别涉及基于二进制程序的漏洞挖掘方法及装置。
背景技术
随着计算机在国民经济和国防建设各个领域的广泛应用,作为信息系统只能载体的计算机软件的安全性变得尤为重要。软件安全漏洞已经成为信息安全风险的主要根源之一。由于软件安全漏洞的危害性、多样性和广泛性,在当前网络空间的各种博弈行为中,漏洞被各方所积极关注。如何有效的发现漏洞、消除或减少漏洞对社会生活、国家信息安全等的负面影响,即漏洞挖掘和防护工作已经成为信息安全领域的研究重点。
面向源程序的漏洞挖掘研究历史已经比较悠久,并取得显著进步。然而处于商业利益、知识产权保护等原因,大部分软件厂商不对外提供源程序;有些厂商虽然提供了源程序,但源程序和实际系统之间的对应关系无从验证。另外,源程序级的漏洞分析也无法发现编译、链接过程引入的漏洞。因此,直接面向二进制程序的安全漏洞挖掘研究具有重要的意义。
针对面向二进制程序的漏洞挖掘,业界主要有静态挖掘和动态挖掘两个大类。然而,面向二进制程序的安全漏洞挖掘面临更多的挑战。一方面,静态挖掘以漏洞模型为指导,运用程序静态分析技术发现程序中安全问题,但是,对于复杂机理的安全漏洞,基于静态程序分析的漏洞挖掘误报率高,往往需要大量人工分析来验证挖掘结果的正确性,这严重制约了静态挖掘技术的应用范围。
基于动态分析的二进制漏洞挖掘方法,利用程序运行时的信息进行漏洞挖掘,其本质是通过真实遍历程序状态空间,检测程序执行过程中是否会违背特定安全属性。由于利用运行时的信息,因此,得到的分析结果均为真实、有效、可重现的。然而,基于动态分析的二进制漏洞挖掘方法依赖于两大技术问题:污点分析和路径遍历。早期的动态漏洞挖掘方法使用大量随机产生的畸形样本来对目标程序进行模糊测试。模糊测试不仅效率低下,而且效果不明显。其原因有两个,其一就是,这些畸形样本的产生完全依靠的是既有的规则,没有对目标程序进行深入的学习分析,导致其中相当大比例的处理流程都一样;其二是,模糊测试仅仅侧重于样本的产生,对于样本中的数据(称为污点数据)在目标程序处理的流程及污点数据之间的关系是不关心的。
路径遍历是通过符号执行的方法来实现的。程序运行过程就是函数调用的过程,每个函数都是由很多条指令组成的,这些指令中有一些特殊的指令:跳转指令。X86汇编中就是类似JMP、JZ、JNZ等的跳转指令。这些指令在执行过程中由于受外部输入的污点数据的影响会跳转到不同的目的地址继续执行。而多次的跳转就可以形成一条跳转路径,程序中会有很多条这种跳转路径。任意一条的执行路径下都有可能有潜在的安全漏洞,如果应用程序在某条路径上运行时,出现了崩溃、信息泄漏等现象,则该路径下就可能存在安全漏洞。因此,为了最大限度的发掘程序中的安全漏洞,就需要对程序的执行路径进行最大限度的遍历。
在输入的污点数据已经确定的情况下,程序的执行路径也就已经唯一确定,但是,唯一的一条执行路径确定的情况下,其输入的污点数据却有可能有很多种。符号执行的目的就是,通过一次执行完毕后,使用根据程序的执行路径的符号表达,求解出代表另外一条新的执行路径的污点数据集。
如上所述,符号执行的目的是求解得出新的污点数据集,然后回到程序的污点数据的引入指令处继续迭代执行,直到没有新的路径产生为止。也就是说,在初始状态下,应用程序根据原始输入数据在某条路径下运行,此时,就可以对程序运行过程中的每个指令进行符号执行,得到一条新的路径,并构造出新的污点数据,接下来就可以将新的污点数据输入到程序中,该程序就会在该新的路径下运行,然后监控该路径下是否存在安全漏洞,同时也进行新一轮的符号执行,求解新的污点数据,直到没有新的路径产生。利用符号执行,能够在复杂的数据依赖关系中发现数据本质的约束关系,而且符号执行精确记录了路径的约束条件,有利于实现对应用程序执行过程中各种可能的路径的遍历。
但是,这种实现方式仍然至少存在以下问题:每次符号执行的过程中存在相当大的重复操作的情况(例如,每次都需要重新打开某文件等等),漏洞挖掘的效果受到影响。
发明内容
本申请提供了基于二进制程序的漏洞挖掘方法及装置,能够减少执行轨迹中重复出现的部分,提高漏洞挖掘的效率。
本申请提供了如下方案:
一种基于二进制程序的漏洞挖掘方法,包括:
在目标程序执行过程中,确定需要进行镜像的目标点;
暂停所述目标程序的执行,并对所述目标点对应时刻的进程状态进行镜像;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310314639.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于光密码的安全控制装置
- 下一篇:网络文本处理方法及装置