ActiveX漏洞分析与防御策略研究

2012-08-20 05:18贺才良周安民
网络安全与数据管理 2012年4期
关键词:字符串控件攻击者

贺才良,周安民,刘 亮

(四川大学 信息安全研究所,四川 成都610064)

微软公司在1996年开发了ActiveX控件技术,它是在组件对象模型(COM)的基础上发展而来的。ActiveX控件的诞生与使用,大大扩展了IE浏览器的功能,使得IE浏览器处理Web文件的能力大大增强。

随着ActiveX控件的应用越来越多,ActiveX漏洞曝光也从未间断。自2006年开始每年都有大量的ActiveX漏洞曝光,其中大部分是高危漏洞,各种利用ActiveX漏洞的恶意软件、木马、病毒随处可见,其引发的安全问题不容忽视。近年来ActiveX漏洞又有回升的趋势,2011年1月~10月已公布的ActiveX漏洞就已经达到了89个[1]。在这些数据当中还不包括未曝光和未被统计的漏洞,ActiveX漏洞的严重程度可见一斑。因此针对ActiveX控件的安全研究十分地关键。

1 UUSee网络电视UUPlayer.ocx控件漏洞逆向分析

2011下半年,UUSee网络电视频频爆出ActiveX控件漏洞,灰帽子实验室在6月2日曝光了UUSee的UUPlayer.ocx ActiveX控件中DoCmd函数存在缓冲区溢出漏洞[2]。由于UUSee网络电视拥有庞大的用户群,故该漏洞属于“高危”型漏洞。鉴于该漏洞的典型性,本文以此为例对ActiveX漏洞进行逆向分析,调试的环境如表1所示。

表1 UUPlayer.ocx控件漏洞调试环境

用OllyDbg附加IE进程并运行,用IE打开POC文件。程序崩溃,OllyDbg捕捉到一个访问异常,EIP寄存器指向了一个非法地址。采用栈回溯的方法在地址0x73D47AC1下硬件执行断点。通过“跳过-异常-进入”方法跟踪到调用漏洞函数指令处:

发现eax指向UUPlayer这个控件的地址空间,观察此时的堆栈,一个可疑字符串出现在栈顶作为CALL EAX的调用参数,跟进此函数。以下列出了该函数中关键的反汇编代码段。

关健代码段1:

这部分代码首先在栈内开辟0x84(132 B)的栈空间,然后将参数所指字符串复制到开辟的栈空间里。从代码可以看出,在复制之前没有检查字符串的长度,只要传入的字符串长度超过开辟空间的大小就会造成溢出,实验溢出示意图如图1和图2所示。

从图1、图2可以看出,传入的字符串刚好淹没了返回地址。

关健代码段2:

这部分代码的功能是将字符串“x0ax00”(换行符)追加到上个字符串末尾,连接后的结果如图3所示。返回地址恰好被覆盖成了0X0A3F2C3F,可以通过堆喷射技术将此地址所在的区域布置成含有shellcode的内存块[3],当函数返回时就会跳到shellcode附近,然后堂而皇之地执行 shellcode。

经过逆向分析,整个函数的大致功能如下:将传入的字符串写入到栈内的缓冲区,然后在其末尾追加换行符,最后将整个字符串写入到某个文件中。漏洞产生的原因是DoCmd方法没有验证字符串参数的长度,导致溢出。将此漏洞和网马技术结合起来构造恶意网页,攻击者就可以在网站上挂马了。Windows用户如果安装了漏洞版本的UUSee网络电视软件,且没有修复漏洞,在用IE浏览挂马网页时就会遭受攻击。由于UUSee网络电视用户众多,ActiveX漏洞利用的成功率相当高,因此该漏洞的危害是很严重的。

2 ActiveX攻击及防御策略

2.1 ActiveX攻击方式

网络钓鱼是攻击者利用ActiveX漏洞实施攻击的主要手段,攻击原理如图4所示[4]。攻击者先利用ActiveX漏洞构造一个恶意网页,再以邮件的方式将链接发送给受害者。受害者使用IE浏览器浏览该网页后,漏洞被触发,嵌在网页中的连接攻击者主机或者服务器功能的Shellcode被执行。之后攻击者给受害者主机上传木马。木马盗取用户信息后发送给攻击者或者上传至服务器,攻击者再从服务器查看受害者的信息。

根据ActiveX控件的来源可以将ActiveX漏洞攻击分为两大类:(1)攻击者提供恶意的有漏洞的ActiveX控件让用户下载并安装,然后利用该ActiveX控件的漏洞实施攻击;(2)攻击者利用第三方软件有漏洞的ActiveX控件实施攻击。具体来讲又可细分为三种情形,如表2所示。

表2 利用第三方控件的三种攻击方式对比

2.2 ActiveX攻击的防御策略

虽然舆论界有许多针对ActiveX的苛刻批评,但是现阶段ActiveX仍然是IE浏览器插件的主要安装手段,这就使得ActiveX漏洞在短期内不会消失。因此需要开发者和用户联合起来,采取安全措施积极地去防御ActiveX漏洞,尽量将风险降到最低。

2.2.1开发者的防御策略

开发安全的ActiveX控件对于ActiveX控件的安全至关重要。开发安全的ActiveX控件需要设计者、程序员、测试员三者在整个产品的生命周期内紧密配合,高度关注控件的安全特性。本文针对如何开发安全ActiveX控件,总结出了安全开发ActiveX控件的基本流程,如图5所示。

图5 开发安全ActiveX控件的一般流程

设计者需要做的工作有:

(1)综合考虑ActiveX控件所带来的好处和存在的隐患,考虑是否可以用其他方法来替代[5];

(2)该控件是否需要被IE调用,如果是就必须将控件声明为脚本安全,采用ATL站点限制模板(SiteLock ATL template)将控件进行站点限制,以禁止被别的站点非法使用[5];

(3)在满足要求的条件下为控件设计最少的功能以减少风险。对照表3所示的威胁列表[6]检查各方法是否存在安全威胁。

表3 ActiveX控件威胁列表

程序员在编写程序时应该以良好的软件开发实践为导向,编写正确的安全的代码[7]。在控件编写完成并进行完善的测试之后,对控件数字签名,防止被篡改。

测试员应对控件的每个方法进行各种输入参数检测,尤其注意对字符串参数长度和方法内部是否存在整数溢出等进行检测。

2.2.2用户的防御策略

用户的防御策略主要包括以下三个方面:

(1)提高安全意识,不访问可疑站点和非法站点。

(2)密切关注漏洞安全,及时升级 Windows系统和安装漏洞补丁,这样可以禁止、修复、移除系统中包含风险的ActiveX控件,确保系统安全。对于第三方控件的漏洞,用户可以通过杀毒软件修复或者手动修复。

(3)正确设置 IE浏览器。

IE浏览器有许多关于ActiveX控件的安全设置,可以阻挡大部分的ActiveX攻击。微软在高版本的IE浏览器中还增加了多个ActiveX安全设置选项,如IE7增加了Opt-in特性,IE8增加了Per-Site特性,这些特性大大增强了IE的安全性能。IE浏览器存在4个安全区域:Internet区域、本地Intranet区域、可信站点区域和受限站点区域,其默认的防御等级分别为:中高、中低、中、高。每个安全域都包含一些设置选项,表4所示为几个重点设置选项(只考虑IE6及以上的版本)。

Internet域适用于大部分的站点,防御处于中高等级比较适宜。在特殊情况下,用户需要下载未签名的ActiveX控件或者控件没有标记为可安全执行脚本却需要使用脚本,则可以将该站点列入到防御等级较低的可信站点区域内。若用户不信任某个站点,但仍然需要访问它,则可以将其列入到“受限站点区域”。合理设置使用这4个区域既可以满足用户的需求又能使IE的安全性能得到最大的发挥。

从表4还可以看出,高版本的IE浏览器支持更多的ActiveX特性选项,其安全性比低版本的要高。另外ActiveX控件的安全性还与系统有关。在Windows Vista系统和Windows7系统中,IE运行在低完整性(Low-Integrity)保护模式下,当ActiveX控件需执行一些中、高完整性操作时会受到用户账户控制(UAC)机制的限制,从而很多在Windows XP系统里的攻击方式都会失效。关于这方面的技术读者可参考相关文献资料。

表4 安全域ActiveX重要设置选项说明

本文主要研究了ActiveX控件的安全问题,重点逆向分析了UUSee网络电视ActiveX漏洞的形成原因及其危害,然后从开发者和用户的角度提出了如何防止ActiveX控件漏洞的产生和针对ActiveX漏洞攻击的防御策略。实践证明,这些方法和策略能够大大降低ActiveX控件漏洞的产生几率,能够有效地抵抗ActiveX攻击。ActiveX控件技术应用相当广泛,其引发的安全问题遍及整个Windows系统用户,应当引起开发人员、Windows用户和安全研究人员的高度重视。

[1]国家信息安全漏洞共享平台.ActiveX漏洞统计[DB/OL].[2011-10-29].http://www.cnvd.org.cn.

[2]灰帽首发-UUSee 6.11.0412.1内存破坏远程执行漏洞[EB/OL].[2011-10-29].http://www.huimaozi.net/?p=122.

[3]王清,张东辉,周浩,等.0day安全:软件漏洞分析技术(第 2版)[M].北京:电子工业出版社,2011:201-203.

[4]LEE D H.Become fully aware of the potential dangers of ActiveX attacks[EB/OL].[2011-10-29].http://www.exploitdb.com/download_pdf/17506.

[5]Designing secure ActiveX controls[EB/OL].[2011-10-29].http://msdn.microsoft.com/en-us/library/aa752035.aspx#ax_repurposing.

[6]李永成,黄曙光,唐和平.ActiveX控件中不安全方法漏洞的检测技术[J].微型机与应用,2010,29(6):62.

[7]ActiveX security:improvements and best practices[EB/OL].[2011-10-29].http://msdn.microsoft.com/en-us/library/bb250471(v=vs.85).aspx.

猜你喜欢
字符串控件攻击者
机动能力受限的目标-攻击-防御定性微分对策
基于文本挖掘的语词典研究
基于.net的用户定义验证控件的应用分析
关于.net控件数组的探讨
正面迎接批判
有限次重复博弈下的网络攻击行为研究
一种新的基于对称性的字符串相似性处理算法
高效的top-k相似字符串查询算法
一种针对Java中字符串的内存管理方案
基于嵌入式MINIGUI控件子类化技术的深入研究与应用