IE 8 RC 发布 附:IE 8 安全特性一文

IE8的最新测试版本:RC1 (Release Candidate 1)刚刚发布了。有兴趣的可以从以下URL下载:

http://www.microsoft.com/windows/Internet-explorer/beta/

附上IE 8 安全特性一文

<程序员>杂志2008年10月

IE 8 安全特性

褚诚云

安全软件工程师

Secure Windows Initiative (SWI)

微软

[email protected]

文章难度:★★★☆☆

申明。文章仅代表个人观点,与所在公司无任何联系。

  1. 概述

随着互联网应用的日益普及,基于浏览器的恶意攻击愈来愈普遍。如何加强浏览器的安全性能也成为IE设计上的一个愈来愈重要的组成部分。

IE7的设计上,微软极大加强了IE的安全功能,引入了如保护模式(低权限工作模式),ActiveXOpt-In,反网络钓鱼过滤器等一系列新的安全特性。IE8中,这一趋势仍然延续。在这篇文章中,我们将讨论IE8中引入的若干重要安全特性,包括: 数据执行保护(DEP/NX)的支持,跨站脚本过滤器,ActiveX控件的保护,和SmartScreen过滤器。

  1. 数据执行保护的支持

2.1什么是数据执行保护

数据执行保护,即DEP Data Execution Prevention),就是禁止应用程序和服务在非可执行的内存区(non-executable memory)上执行指令。

80x86体系结构中,操作系统的内存管理是通过页面(page)存储方式来实现的。虚拟内存空间的管理,如代码,数据堆栈,都是通过页面方式来映射到真正的物理内存上。

AMD64CPU上,在页面表(page table)中的页面信息加了一个特殊的位,NX位(No eXecute)。如果NX位为0,这个页面上可以执行指令。如果NX位为1,这个页面上不允许执行指令。如果试图执行指令的话,就会产生异常。Intel在它的CPU上也提供了类似的支持,称为XD 位( eXecute Disable),其原理和AMDNX是完全一样的。

DEP的重要性在于它可以有效的阻止基于堆(heap)或栈(stack)的缓存溢出而导致的安全漏洞。特别的,针对浏览器而言,它可以有效阻止堆污染(heap spray)类型的攻击。

2.2 IE8DEP的支持

在操作系统支持DEP的前提下,如果一个应用程序支持DEPDEP Opt-in)的话,那么其进程的数据页面被DEP保护,禁止在其上执行指令。

IE7中引入了“Enable memory protection to help mitigate online attacks”这一选项。这个选项的功能就是配置IE支持DEP。但在IE7中,这个选项在缺省情况下是关闭的。IE7缺省不支持DEP的主要原因是兼容性方面的考虑。许多流行的IE的插件,由于使用老的ATL版本(ATL 7.1 SP1之前的版本),不兼容DEP。如果IE使用DEP的话,就可能会造成其进程的异常退出。

IE8则改进为:如运行在Windows Server 2008 Windows Vista SP1上,缺省的配置是支持DEP。见图

图1:IE8中DEP的配置选项

有两个原因使IE8能够作这个改进:一,许多流行的IE插件的更新版本可以做到和DEP兼容;二,Windows Server 2008 Windows Vista SP1上,提供了新的DEP/NX 的接口,可以让IE8在支持DEP的同时,提供了对老的IE插件的兼容性。

  1. 跨站脚本过滤器

跨站脚本,即Cross-Site ScriptingXSS),这类的安全漏洞已经成为最为普遍的Web安全漏洞。那么,什么是XSS安全漏洞?简单的说, XSS安全漏洞就是攻击者的恶意脚本可以运行在用户浏览的当前网站上。一旦恶意脚本被执行,攻击者就可以:

  • 窃取用户在该网站的Cookie,其中可能包括Hotmail的密码,银行帐号等等。
  • 监控用户使用该网站的输入。
  • 以用户身份来执行特定操作。例如,如果Hotmail存在XSS安全漏洞的话,攻击者就可以以用户身份收发邮件等等。

虽然有许多工具可以帮助网站开发人员检查并消除网站存在的XSS安全漏洞,但是这些工具是针对开发人员,并不面向普通用户。一旦网站已经存在XSS安全漏洞,它并不给普通用户在浏览该网站时提供任何对XSS攻击的保护。

XSS安全漏洞中,最常见的一类称为“反射类”,或“类型1”的XSS安全漏洞。IE8中的XSS过滤器就是为了保护普通用户即使在访问的网站存在XSS安全漏洞的情况下,也能避免类型1XSS攻击。有兴趣的读者可以参见【1】来了解关于XSS安全漏洞的更多信息。

XSS过滤器可以监控浏览器的HTTP请求和响应。如果发现了可疑的XSS攻击脚本,它就会提示用户,并且自动将恶意的脚本过滤为普通的文本信息显示在页面上。参见图2(来源:参考文献2)。

图2:XSS过滤器

需要强调的是,XSS过滤器的目的是为了阻止最为常见的XSS攻击。它并不能阻止所有类型的XSS攻击,更不意味着WEB开发人员从此就不需要关注其网站是否存在XSS安全漏洞了。

基于兼容性的考虑,如果网站的开发人员希望XSS过滤器不对其网站内容检查的话,可以设置以下HTTP头信息:X-XSS-Protection: 0

  1. ActiveX控件的保护

IE7中引入了ActiveX Opt-in的概念:在缺省情况下禁用了大部分ActiveX控件。IE8在此基础上,又引入了以下两个保护措施以进一步加强对ActiveX控件的管理。

基于用户的ActiveX控件(Per User ActiveX

IE8以前,安装ActiveX控件都需要管理员权限,安装的控件可以被机器的其它用户使用。在IE8中,用户ActiveX控件可以安装在用户目录下,不影响其它的用户的使用。

基于网站的ActiveX控件(Per Site ActiveX

当用户访问的网站需要加载ActiveX控件时,IE8会作一系列的检查。其中的一项是该ActiveX控件可以在该站点被使用。这个检查就是Per Site ActiveX。它的目的是阻止一个ActiveX控件被攻击者恶意使用(malicious repurpose)。

IE7中,如果需要加载的ActiveX控件不在被允许的列表中,IE通过信息条提示用户是否要运作该ActiveX控件。一旦用户决定运行,以后任何网站需要加载该ActiveX控件的时候都会被默认批准。

IE8中,则细分为Run Add-on Run Add-on on All Websites 两个选择。如果选择Run Add-on的话,意味着该ActiveX控件只会被当前特定的站点默认加载。也就是说,以后只有在访问这个网站的时候,加载该ActiveX控件的时候才会被默认批准。其它的网站如需加载,还是会有IE信息条提示信息。参见图3

图3:基于网站的ActiveX控件

  1. SmartScreen过滤器

IE7中提供了反网络钓鱼过滤器(Anti-Phishing Filter)。IE8中将其扩展为SmartScreen过滤器。

除去用户界面,性能,对网络钓鱼检测的改进,SmartSceen 的最大变化在于增加了对恶意网站/程序的检测。当用户访问网站时,SmareScreen过滤器会通过后台的网站声誉(Reputation)数据服务评估当前的URL的声誉。如果这个URLReputation服务认定可能提供恶意代码,那么IESmartScree过滤器就会提醒用户访问这个网站是不安全的。参见图4(来源:参考文献2)。

图4:SmartScreen过滤器

SmareScreen过滤器的反恶意程序功能并不像传统的反病毒软件基于样本的特征码,而是基于对URL的评估。这个功能类似于Google搜索结果中的对恶意网站的提示,不过更进一步结合在浏览器的使用中。

需要强调的一点是SmartScreen过滤器的反病毒功能是为了在用户访问恶意网站时提示用户。它并不能替代传统的反病毒软件。

  1. 其它安全改进

IE8还提供了若干其它的安全特性,例如:

    • 基于跨域文档(Cross Domain Document)的安全。对MashupHTMLJSON加强检查。
    • 增强对MIME类型数据操作的安全性。
    • 增强对应用程序协议(Application Protocol)和上传文档操作的安全性。
    • 地址栏中高亮显示域名(Domain Highlights)以便用户更容易发现网络钓鱼攻击。

限於篇幅,我们这里就不详细讨论了。有兴趣的读者可以阅读参考文档以获取更详细的信息。

  1. 总结

浏览器的安全是浏览器设计上不可缺少的组成部分。IE 8安全性能较IE7相比,有了更进一步的提高。

  1. 参考文献
  1. Cross-Site Scripting (XSS), http://en.wikipedia.org/wiki/Cross-site_scripting, Wikipedia
  1. IE8 Security Part 1, 2, 3, 4, 5, http://blogs.msdn.com/ie/, Microsoft