Internet Explorer体系结构(3)

  

Windows Vista和更高版本的完整性级别主要分为4个主要类别:

●       系统:核心操作系统权限(NTAUTHORITY);系统组件、文件和数据

●       高:计算机级别访问权限(管理员);程序文件和本地计算机注册表配置单元

●       中:用户级别访问权限(用户);用户文件和设置、当前用户注册表配置单元

●       低:不受信任的内容、临时文件和数据

Windows为通信处理和数据访问设置了一些基本规则。首先,进程只能向下发送命令,而不能向上发送;例如,以“低”级别运行的应用程序不能直接运行一个需要中级访问权限的API,也不能访问需要中级访问权限的文件。其次,不同级别的进程只能通过该群组中的最低权限完整性级别进行通信;例如,如果一个中级进程和一个低级进程需要进行对话,它们只能通过一个具有低完整性级别的通道来实现,例如通过一个低完整性命名管道。最后,正在运行的进程不能在没有用户许可的情况下启动具有更高级别的新进程;例如,一个以中级权限运行的应用程序需要启动一个高级别的应用程序,用户将会看到一个UAC提示,以允许或拒绝该请求。对这个数据流,显然还有很多微妙之处和规则,但其基本前提很清晰:应用程序都获得一个许可级别,它们必须在此级别范围内操作,必要时,这些应用程序必须申请更高的访问权限。

保护模式是IE的一项功能,用于在Windows的完整性级别中分隔IE组件。IE会触及操作系统的很多不同部分;例如,为实现缓存和cookie需要访问临时Internet文件,为实现用户预设置需要访问用户文件夹和注册表项,为了实现持久数据及计算机范围内ActiveX控件,需要访问计算机级别的文件和注册表项。IE开发团队将这一非常广泛的访问权限与Windows的新MIC体系结构进行对比,最后得出结论:大量恶意攻击都可以通过这些控件得到缓解。因此,IE现在分解为独立的进程、线程和通信控制器,使整个应用程序能够符合Windows在体系结构上的这一新的隔离方式。

保护模式用到了Windows体系结构的两个关键组件:MIC和用户界面特权隔离(UIPI)。MIC在前面已经提到,限制低级进程对高级位置和API的访问。保护模式依靠MIC来保护用户配置文件、注册表和API(例如OpenProcess()、OpenThread()和CreateRemoteThread()),使其免受非授权访问。UIPI是一种强制机制,它阻止向高级进程发送特定的windows事件消息。保护模式依靠UIPI来防止低级进程向更高级权限的进程发送潜在的恶意消息(也就是所谓的“粉碎攻击(shatter attack)”)。

IE采用一种符合MIC体系结构的方式来分隔其进程和功能(如图1-2所示)。保护模式的网页被加载到以低完整性级别实例化的iexplore.exe进程中。默认情况下,在这一进程中工作的页面和扩展可以访问标有低完整性级别的临时Internet文件、使用标有低完整性级别的API和消息,并调用一组由高完整性级别IE“代理”进程提供的安全API。

一般来说,不受信任的网页内容非常适于采用低完整性级别,但这些限制也阻碍了在这种页面与其父框架之间进行非常基本的通信。例如,一个页面可能需要将其标题发送给父框架,以便在IE标题栏中显示,或者,一个页面可能需要启动一个ActiveX控件的安装。IE框架进程允许低完整性级别通过UIPI执行高级别任务;较低完整性级别的页面可以要求代理框架进程为它们执行那些不允许自己执行的任务。

注意:

在IE 7中,中级完整性级别的代理是在ieuser.exe进程中实现的。而在IE 8中,ieuser.exe中的功能被重构回iexplore.exe中,作为松耦合Internet Explorer实现的一部分。

图1-2  保护模式体系结构框图

在一个网页内容中运行的ActiveX控件、行为和其他扩展(也称为“内容扩展”)需要以其父进程的完整性级别运行。另外,在框架中可以看到的扩展(例如工具栏和菜单项、浏览器栏和工具栏)也必须符合这些新的策略。在刚引入IE 7时,这一变化导致了一个问题——大量加载项所依赖的API不能供那些以低完整性级别运行的进程使用。为了降低兼容性影响,IE 7和IE 8提供了读/写虚拟化和包装API。这些改变并没有解决所有兼容性问题,其中一些只能通过创建代理应用程序来缓解。在本章最后几章中将讨论这些API以及如何创建代理应用程序。

这一功能是受安全区域设置(将在本章后面讨论)控制的。在IE 7中,保护模式可以在“受限”、Internet和Intranet安全区域中的所有页面上运行,而在IE 8中,它只能在前两者中运行。在未使用保护模式时,IE进程的权限级别与当前用户账户的权限级别相同(在Windows XP中总是如此)。

并非对于所有页面或者所有Windows版本都使用了保护模式。在Windows XP和Windows 2003中,由于这些平台上没有MIC功能,所以也就没有“保护模式”功能。对于WebBrowser控件或MSHTML的主机,这一功能也是不可用的。

读书导航