新Internet Explorer漏洞影响所有版本IE
安全研究与防御团队
作者: swiat
发布日期: 2010年12月22日
阅读时间: 2分钟
今日我们发布安全通告2488013,告知客户Internet Explorer(IE)中存在一个新公开披露的漏洞。该漏洞影响所有版本的IE。利用此漏洞可能导致在iexplore.exe进程内执行未经授权的远程代码。
概念验证利用绕过ASLR和DEP
Metasploit项目最近发布了利用此漏洞的代码,采用已知技术规避ASLR(地址空间布局随机化)并绕过DEP(数据执行保护)。
简而言之,Internet Explorer在处理某些HTML标签时会加载mscorie.dll,该库未使用/DYNAMICBASE编译(因此不支持ASLR且始终位于相同基址)。攻击者利用这些可预测的映射规避ASLR,并通过这些DLL中的ROP(返回导向编程)小工具绕过DEP,以分配可执行内存、复制其shellcode并跳转执行。请注意,若无此可预测映射,唯一公开的规避ASLR和DEP的方法包括:
- 利用此漏洞(若当前漏洞允许)或其他漏洞作为信息泄露
- 使用JIT-spraying或类似技术。请注意IE仅对IE9的JavaScript进行JIT编译,且已部署安全缓解措施。但第三方插件可能以不安全方式进行JIT编译
我们最近在此博客讨论了ASLR和DEP的有效性。
建议:使用增强缓解体验工具包(EMET)动态重基址所有加载的DLL
为最小化利用风险,用户可安装EMET并按照BlueHat视频所示保护iexplore.exe进程。
试图绕过ASLR和DEP的利用会使用多个ROP小工具实现不同目的。为理解EMET为何是这些利用的有效应对措施,我们重点关注将栈指针设置为攻击者控制数据(本例中为堆喷)的栈旋转小工具:
|
|
当部署EMET时,此类利用很可能失败。原因至少包括三项缓解措施:
- 强制ASLR:此缓解措施强制mscorie.dll每次加载到随机地址
- 堆喷预分配:部分利用使用常见堆页面(如0x0c0c0c0c)放置ROP数据
- EAT过滤:运行shellcode可能被此缓解措施阻断
尽管上述后两项缓解措施并非万无一失且可被规避,但强制ASLR是关闭mscorie.dll利用向量的可靠方法。当利用尝试跳转到其认为位于可预测内存地址的ROP小工具时,将触发访问违规并崩溃进程:
|
|
利用将因此失败。
感谢MSRC工程团队的Richard van Eeden、Bruce Dang和Jonathan Ness协助调查此问题。
–
Fermin J. Serna, 安全软件工程师
文章按“原样”提供,无任何保证,不授予任何权利。