一种动态污点数据分析方法及装置的制造方法_3

文档序号:8430640阅读:来源:国知局
合一个实施例对本发明方案进行详细描述。该实施例以Windbg作为调试器,Internet Explorer作为被调试程序,即使用windbg调试器提供的调试功能,使用本发明方法调试Internet Explorer来挖掘其内部存在的漏洞。
[0065]首先,利用软件断点引入污点数据,并建立对应污点数据的上下文。具体到该实施例中,污点数据指的是Internet Explorer(简称IE)进程内部的对象数据(HTML Element),这些污点数据会在程序中的某些指令地址被创建。因此,需要先利用外部方法(二进制静态分析)获取到所有会创建新的污点数据的指令地址,再使用windbg调试器插件提供的命令“bp”对这些指令地址下软件断点,以引入污点数据;接着,使用windbg的“g”命令使得IE进程运行起来,命中断点后,即为有新的污点数据(对象)被创建(假定为A),就将这个对象的内存地址放到一个python的diet结构中,如:ieObjectMap [A.addr] =Element (A.name, A.type, A.addr, A.size),这个结构就是污点数据的上下文(ieObjectMap)。
[0066]然后,利用内存断点和软件断点对污点数据进行分析。具体到该实施例中,污点数据A被引入后,系统会对A设置内存断点:即污点数据A包含起始地址、大小,这里使用windbg 插件的 api,如:setMemoryType (A.addr, A.size, PAGE_N0ACCESS),即可设置 A 的内存起始地址[A.addr, A.addr+A.size]范围的内存区间为不可访问。这样,IE进程运行起来后,正常情况下会对A的内存空间进行写入操作,而由于内存空间为不可访问,从而触发内存断点。通过内存断点的相关信息(系统可以提供),获取到写入的数据B,进而从ieObjectMap 中查找是否存在以 B 为 key 的条目,如果 if ieObjectMap.exist (B) ==True,那么表示存在,认为A的内存空间存在B的引用(即A中保存了 B的地址)。接着,就会在A的污点数据上下文中增加B的相关信息,即A.beReferredObject.append (B)。如果ifieObjectMap.exist (B) ==False则表示不存在,此时就忽略即可。
[0067]最后,根据预先设置的安全策略对污点数据进行安全性分析。具体到该实施例中,在执行过程中,在B即将被释放时,通过遍历ieObjectMap,查找是否有污点数据引用了 B,即如果确定出 if ieObjectMap [i].beReferredObject.exist (B) ==True,而此时,A 中引用的B已经被释放,A中保存的B地址已经非法,A使用这个地址时会造成崩溃,精心布置的内存数据会导致任意代码执行漏洞。即所谓的Use-After-Free漏洞。所以,说明仍有其他污点数据(比如A)引用B,则认为存在安全风险。
[0068]本领域的技术人员应该明白,上述的本申请实施例所提供的装置的各组成部分,以及方法中的各步骤,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上。可选地,它们可以用计算装置可执行的程序代码来实现。从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
[0069]虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
【主权项】
1.一种动态污点数据分析方法,其特征在于,包括: 利用软件断点引入污点数据,并建立对应污点数据的上下文; 利用内存断点和软件断点对所述污点数据进行分析。
2.根据权利要求1所述的动态污点数据分析方法,其特征在于,该方法还包括:根据预先设置的安全策略对所述污点数据进行安全性分析。
3.根据权利要求1或2所述的动态污点数据分析方法,其特征在于,所述污点数据的上下文中的内容体现所述污点数据的属性。
4.根据权利要求3所述的动态污点数据分析方法,其特征在于,所述污点数据的上下文包括:污点数据的引入点、和/或污点数据的大小、和/或断点触发后引入污点数据的点、和/或污点数据被引入的次数。
5.根据权利要求1或2所述的动态污点数据处理方法,其特征在于,所述利用内存断点和软件断点对污点数据进行分析包括: 如果当前断点为内存断点,且触发当前内存断点获得的数据存在于系统预先设置的异常上下文中,确定获得的数据为污点数据,对所述污点数据的上下文进行处理; 如果当前断点是软件断点,将获得的数据作为新的污点数据存入异常上下文中。
6.根据权利要求5所述的动态污点数据处理方法,其特征在于,所述异常上下文为污点数据哈希表。
7.根据权利要求2所述的动态污点数据处理方法,其特征在于,所述安全性分析后,该方法还包括:销毁存在安全问题的污点数据。
8.一种动态污点数据处理装置,其特征在于,包括引入模块,以及分析模块;其中, 引入模块,用于利用软件断点引入污点数据,并建立对应污点数据的上下文; 分析模块,用于利用内存断点和软件断点对污点数据进行分析。
9.根据权利要求8所述的动态污点数据处理装置,其特征在于,所述分析模块具体用于: 所述当前断点为内存断点时,且触发当前内存断点获得的数据存在于系统预先设置的异常上下文中,确定获得的数据为污点数据,对所述污点数据的上下文进行处理; 所述当前断点是软件断点时,将获得的数据作为新的污点数据存入异常上下文中。
10.根据权利要求8或9所述的动态污点数据处理装置,其特征在于,还包括安全处理模块,用于根据预先设置的安全策略对所述分析模块确定的污点数据进行安全性分析。
11.根据权利要求10所述的动态污点数据处理装置,其特征在于,所述安全处理模块还用于,销毁所述安全处理模块分析后存在安全问题的污点数据。
【专利摘要】本申请公开了一种动态污点数据分析方法及装置,包括利用软件断点引入污点数据,并建立对应污点数据的上下文;利用内存断点和软件断点对污点数据进行分析。本申请通过软件断点引入污点数据,只对相关指令进行污点分析,无需对全部指令集进行翻译和分析,而且,通过利用内存断点和软件断点对污点数据进行分析,高效地实现了监控污点数据的引入和传播过程,从而降低了成本,提高了污点分析效率。进一步地,本申请还包括根据预先设置的安全策略对确定的污点数据进行安全性分析,保证了存在安全漏洞的污点数据被及时清除。
【IPC分类】G06F21-12, G06F11-36
【公开号】CN104750602
【申请号】CN201310741181
【发明人】樊兴华
【申请人】阿里巴巴集团控股有限公司
【公开日】2015年7月1日
【申请日】2013年12月27日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1