基于DOM结构的分布式IE浏览器漏洞挖掘探究
2014-02-16田泽轶彭设强吴志勇
田泽轶,彭设强,吴志勇
(1,2国防信息学院信息安全教研室,武汉,430010;3总参第五十四研究所,北京,102200)
基于DOM结构的分布式IE浏览器漏洞挖掘探究
田泽轶1,彭设强2,吴志勇3
(1,2国防信息学院信息安全教研室,武汉,430010;3总参第五十四研究所,北京,102200)
采用基于DOM树结构动态执行的IE浏览器漏洞挖掘方法,设计并实现了分布式IE漏洞挖掘器,并阐述该挖掘器的原理。测试发现了IE的50类漏洞。
IE浏览器;模糊测试;DOM树
0 引言
软件漏洞成为威胁隐私,损害利益的重要因素。这些软件中,浏览器占据非常重要的位置。Internet Explorer浏览器长期占有全球最高的浏览器市场份额,从2014年1月到5月IE8.0占有市场份额33.67%,IE成为市场上使用量最大的浏览器。
IE漏洞危害巨大,高危的IE漏洞如CVE-2013-0027,CVE-2014-1770等,微软官方常常不能做到及时更新补丁,保证用户的安全。IE漏洞的另一个特点是难以发现,对此微软设立了专门的奖金,鼓励全世界的人帮助它完成漏洞的挖掘工作。
IE浏览器的漏洞挖掘,能够极大的避免受到漏洞的波及和影响,提高系统的安全性和稳定性。
1 IE浏览器的模糊测试
1.1 模糊测试思想
模糊测试是当前业界最普遍的软件漏洞测试方案。旨在通过无规律的用户输入或者文件输入,程序对处理这类的任一数据产生错误,从而出现系统冲突,死锁甚至死机,重启等情况,则认定软件产生了exception,触发了漏洞。
模糊测试以正常的文件模板为基础,按照一定规则产生一批畸形文件,使目标软件执行,用监控器进行检测,观察软件是否产生异常,并记录软件产生exception的测试用例、以及寄存器,栈状态等信息,工作人员检查,漏洞是否可重现,可利用。常用的模糊测试工具有Peach,Sulley和Spike。
1.2IE模糊测试的传统方法
IE浏览器具有了除网页浏览的查看PDF,JPG,支持web应用等新功能,这为IE的测试提供了新的思路。我们先做了基于PDF的Peach框架下的IE Fuzzing实验。在编写针对PDF的XML解析文件之后,在10个Peach节点上进行Fuzzing实验,同时对Sulley,Spike等多个测试框架均做了实验,最终均未发现IE漏洞。
1.3传统模糊测试方法的弊端
经研究发现传统的模糊测试未针对IE浏览器做定制,未体现浏览器的特性。浏览器加载测试样本文件后,执行过程是唯一的,极大的消减了浏览器的动态执行的特性。
2 基于DOM树动态执行的IE的模糊测试
经过大量的分析和设计,我们提出了基于DOM树的Fuzzing方式,即基于语法的动态执行的模糊测试。
2.1DOM树对IE模糊测试的意义
DOM是Document Object Model,是一种与浏览器,平台,语言无关的接口,HTML文件对应DOM树,通过操纵DOM元素,可以构造,重现HTML文件。我们使用JavaScript语言,将测试用例构造成为在内存中生成的DOM文件,并操纵IE加载DOM文件中的元素,将IE的执行随机化。基本的流程如Figure 1所示。
Figure 1 DOM树Fuzzing总体设计
2.2基于DOM树的模糊测试实现
将DOM元素名称,可以赋值的数据,可以使用的Style数据进行整理存入数据集合中。在原始DOM树的创建中,随机选择DOM节点元素,并使它随机成为DOM树的某个节点的子节点,建立一颗DOM树。对其属性进行随机选择,随机赋值,赋值的选择范围即已存在的随机数据集合。对样式进行随机选择和赋值。对于event事件,从事件列表中随机选择一项添加到该节点。
然后对DOM树的结构进行调整,随机选择DOM节点(称为A节点),然后基于随机选择的DOM元素范围(称为R),调整全部基于JS函数实现,具体方式有:①直接删除R,②折叠R,③将R变成A节点的子树,④将R设置为A和A的所有子孙节点这段范围,⑤将R设置为A的所有子孙节点这段范围,⑥将A插入R的开始,⑦将A之后的节点设置为R的起始节点,⑧将A之前的节点设置为R的起始节点,⑨将A之后的节点设置为R的结束节点,⑩将A之前的节点设置为R的结束节点。调整之后的遍历,首先随机选择一个节点作为遍历的起始节点,然后以该节点开始生成迭代器,向前或向后遍历依然随机化处理。
对DOM元素进行Fuzzing,实际就是对它加载到IE浏览器解析执行的过程。在加载之前,将DOM元素当前的属性改变赋值,具体的方式有:①改变为null,②改变为预设好的可选数值中的任意一个,③改变为它的父节点的某属性值,④改变为它的子节点的某属性值,⑤改变为该DOM树中随机的一个节点的属性值。
最后使用JS的Eval()函数将DOM元素加载入浏览器并执行。当监控器发现浏览器崩溃现象,启用Refresh()函数,重新加载页面,从生成原始DOM树开始重新进行测试。
2.3模糊测试的数据记录
本实验使用LOG函数对当前的操作进行保存,具体包括每一次的函数执行信息,数据赋值和DOM树结构调整。LOG文件使用XML格式进行保存,并可以通过LOG文件解析回HTML文件并重现漏洞。
3 基于分布式的模糊测试
3.1分布式的必要性
基于DOM树的Fuzzing方式,大约会产生10000000个测试用例。为了能够尽可能的覆盖所有的测试用例,提高测试的精确度,我们通过分布式将测试用例均分给100个节点,并由一台主机进行信息收集和管理。
Figure 2 IE漏洞的WinDbg调试截图
3.2分布式模糊测试的设计
我们使用C/S模式进行实验。将Server机和Client机都用虚拟机来承载。Client机向Server机发送LOG信息,Server机向Client机发送指令。Client机有4个运行状态,Startup/Ready、Running、Exception & reboot和Finish & reboot,只能依次向前直到Reboot返回第一个状态,不能由当前状态返回上一状态。
Client开机处在Startup状态,向Server机发送运行请求,执行Fuzzing任务并处在Running状态,若监控机制发现Client产生了exception,就将LOG文件和状态信息发送给Server机,Client接收指令即重启系统。若未发现exception,在当前所有操作执行完之后,进入finish状态,监控机制将信息发送给Server机,Client接受指令即重启。
4 测试方法与结果分析
本实验测试的IE版本为Internet Explorer 10.0.9200.16736,windows版本为Microsoft Windows 7旗舰版,6.1.7601 Service pack 1 Build 7601,实验通过在100台 Client机上并行的运行1000万个测试用例之后,收集了50类IE的exception。Figure 2是其中一个IE漏洞的WinDbg截图证明:
通过分布式处理,提高了实验效率,节省了实验时间,对数据进行了收集和整理。将Fuzzing测试这项本需要大量的试验时间和人工干预的工作进行了智能化和自动化改进。
5 结束语
本文实现了基于DOM树动态执行的IE漏洞分析器,并通过分布式在100个Client节点上执行了1000万个测试用例,发现了IE的50类漏洞,记录了所有漏洞信息并成功复现。提出了全自动的Fuzzing方式,提高了测试效率,减少人工操作,提升检测准确性。在下一步的工作中,我们将提高系统的稳定性,加入自学习模式,进一步提高漏洞检测的精准度。
吉根林;韦素云;鲍培明;;一种基于DOM树的XML数据频繁模式挖掘算法[J];南京航空航天大学学报;2006年02期
Research on Distributed Vulnerabilities Mining of IE Browser Based on DOM Structure
Tian Zeyi1,Peng Sheqiang2,Wu Zhiyong3
(1,2Academy of National Defense Information,Wu Han,430010;3.The 54th Research Institute of General Staff,Beijing,102200)
Use mining methods based on dynamic implementation of the DOM tree structure,design and implement the distributed IE vulnerabilities mining machine,elaborate the principle of the machine.Test results found 50 kinds of IE vulnerabilities.
Internet Explorer Browser;Fuzzing;DOM Tree