代号 Gazelle,微软研发浏览器上的操作系统

阅读数:2629 2009 年 7 月 2 日

话题:.NET安全微软架构Chrome语言 & 开发

由 Hellen J.Wang 带领的一个微软研发团队提出了浏览器上的操作系统Gazelle(PDF),目的是加强网上冲浪的安全性。

Gazelle 并不是一个新的 Windows,而是一种新型的浏览器,它的内核会像操作系统那样,为不同的网站(web site principals) 分配资源并对这些资源提供访问保护。Security principal被定义为“一个可以被计算机系统或网络验证的实体。检查和确认这个实体标识的过程被称为验证”。微软研究院的 Janie Chang 定义了browser principal,并解释了为什么安全如此重要::

在浏览器中,principal 一般就等价于一个网站。对于计算机来说,通常在同一时刻只有一个用户在使用,系统资源是被不同的应用程序所共享的;而对网 页来说,每个页面可能包含了来自不同网站的内容,计算资源是被这些不同网站的内容所共享的。因此浏览器自然而然就成为为这些网站调配资源的平台。

一个网页可能包含来自其它网站的内容,比如广告和新闻。所有这些来源不同的内容都共存在浏览器的同一进程或保护域(protection domain)中。含有恶意代码或问题代码的广告会阻塞网络、降低性能、锁死整个页面甚至让浏览器崩溃。而在浏览器操作系统中,有问题的网站(内容)并不 会影响到其它网站(的内容)、浏览器本身或者计算机。

Wang 等人将 principal 定义为“由网站来源(协议、域名、端口)标识的同源策略(SOP)下”的网站。为了加强对 principal 的保护,在网站和操作系统之间引入了浏览器内核(browser kernel),如图 1:

浏览器内核运行在独立的保护域中,存在于网站和传统的操作系统之间。内核协调网站对系统资源的访问,并在浏览器上执行安全策略。本质上,浏览器内核就是网 站的操作系统,负责管理和保护系统资源。此外浏览器内核还管理着浏览器的外观,例如地址栏和菜单。内核接收所有来自底层操作系统的事件,包括鼠标点击或键 盘操作这样的用户事件,这些事件将被分发到正确的网站运行实例(principal instance)。当用户点击指向另一个来源的超链接时,浏览器内核会为这个 URL 指向的网站实例创建一个新的保护域(如果还不存在的话)来渲染页面, 销毁包含这个链接的页面所在的保护域,并将窗口重新初始化以显示 URL 指向的网站实例。

Wang 等人比较了 Google Chrome 和 Gazelle 在安全方面的实现。Google Chrome 使用了如下的进程模型: 单进程、每浏览实例一进程(process-per-browsing-instance)、每网站实例一进程(process-per-site- instance)和每网站一进程(process-per-site)。浏览实例由所有互相关联的窗口、框架和子框架构成,而网站实例由所有来自同一网 站的网页构成,并存在于浏览实例中。根据 Wang 等人所说,网站被定义为“一组共享注册域名的 SOP 来源。如 attackerAd.socialnet.com,alice.profiles.socialnet.com 和 socialnet.com 就共享了注 册域名 socialnet.com,因此被 Chrome 当成是同一个网站”。

Chrome 的默认模型是每网站一进程(process-per-site-instance)。除此之外……目前的 Chrome 实现在每网站实例 一进程(process-per-site-instance)和每网站一进程(process-per-site)中不支持严格的网站隔离:含有不同网 站内容的 iframe 等内嵌内容会和页面(上的其它内容)放在一个进程中。Chrome 的单进程和每浏览实例一进程(process-per- browsing-instance) 模型都不提供在不同网站之间对内存和其它资源进行隔离保护。每网站一进程(process-per-site)模型不会在网站实例之间提供错误保护。 Chrome 的每网站实例一进程(process-per-site-instance)模型与 Gazelle 的每网站实例两进程(two processes-per principal- instance)模型最为相似,但是有几个重大的区别:1. Chrome 的 principal 就是网站,而 Gazelle 的 principal 是 SOP principal;2. Chrome 中网站自己的内容与内嵌的内容共存于同一进程中,而 Gazelle 将它们放在不同的保护域中,为此我们还需要研究如跨网站显示保护这样的新东 西;3. Chrome 中不同网站的插件都运行在同一个进程中,而 Gazelle 将它们放在各自的保护域中;4. Chrome 在渲染进程中对不同的网站执行 SOP。这些区别显示,Chrome 中的跨网站隔离保护发生在渲染和插件进程中,而不是浏览器内核。相 反,Gazelle 的浏览器内核则像一个操作系统,管理着资源的跨网站隔离,也包括内容显示。

Wang 等人还提到了 Gazelle 和 IE8 的不同

IE8 使用操作系统进程来隔离不同的 tab,这种方式效率并不高,因为用户可能会在同一个 tab 中同时浏览安全和不安全的内容,而同一个页面也可能包含有来自不安全站点的 iframe(如广告)。

T 研发团队的结论是:

基本上,Chrome 和 IE8 的目标与 Gazelle 并不相同。他们对多进程的使用是为了在不同浏览进程之间控制错误,而不是为了安全。他们的安全目标是 通过使用沙箱进程来保护操作系统。Chrome 和 IE8 已经在浏览器架构设计中迈出了坚实的一步。今后,越来越多的数据和功能会被塞到 web 中,浏览器会 成为最重要的应用程序平台,将浏览器当成操作系统来将不同的网站以及计算机本身隔离起来,是浏览器设计者急需考虑的问题。而这就是 Gazelle 的目标。

通过使用 IE7 的向后兼容解析、DOM 管理和 Javascript 引擎,一个 Gazelle 原型已经被构造出来。据称它的性能与 IE8 和 Google Chrome 在同一数量级上。跨网站脚本隔离使用了图 2 的架构。原理是使用沙箱运行插件代码以隔离恶意代码,这样在插件出现问题的情况下,浏览器仍然可以 运行。

这个项目对那些担心微软还没有放弃将浏览器完全合并到操作系统中的人来说是一个惊喜。虽然微软保证他们只是为了加强安全性,但对于很多厂商来说是这 一个重大的推动,因为浏览器将要成为桌面上最重要的应用程序平台。目前 Gazelle 仍只是一个研究项目,时间会证明它是否能够成为一个产品,或者至少会 集成在 IE、其它浏览器或 Windows 上的在线应用程序中。

查看英文原文:Microsoft Researches a Browser-based OS, Code Name Gazelle