Chrome沙盒是如何工作的
还记得我前面提到的渲染进程吗,实际上它们是Chrome中的沙盒进程,因为它们处于沙盒中,它们能使用的唯一资源是CPU周期和内存,渲染进程不能对磁盘进行操作,也不能显示它自己的窗口,这些任务是由浏览器进程控制的。
Google Chrome使用了基于访问令牌的Windows安全模型,一个访问令牌是由进程所有者和进程拥有的特权信息组成的,读取访问令牌后,操作系统就知道该进程或沙盒可以访问哪些资源了,下面是Google对此的解释:
“启动渲染进程之前,我们修改它的令牌,移除所有特权,禁用所有组,然后将这个令牌转换成一个受限制的令牌,受限的令牌和正常令牌一样,但访问检查会执行两次,第一次使用令牌中的正常信息,第二次使用辅助组名单。
前后两次访问检查都通过后,才会将资源授予该进程访问,Google Chrome设置了辅助组名单,它只包含一个项目 – null user,因为这个用户不会获得任何对象的权限,对渲染进程访问令牌的所有访问检查都会失败,因此对攻击者来说,这个进程是无用的。”
使用沙盒可以阻止攻击者攻击浏览器,恶意代码可以在沙盒进程内运行,但它不能读取或修改计算机上的任何文件,我再次请教了Ian Fette。
记者:你能举一些真实世界中的例子,解释一下使用沙盒对我们的计算机有什么保护吗?
Fette:和其它浏览器一样,我们维护了一份我们已经修复的安全漏洞列表,其中大部分漏洞因有沙盒的保护影响都降低了,例如,在我们的JavaScript引擎中曾经有一个整数溢出漏洞,如果没有沙盒的保护,攻击者可以利用这个漏洞在你计算机上执行任意代码。
有了沙盒的保护后,因这个漏洞暴露的攻击点非常少了,当浏览器标签关闭后,攻击者不能在你的计算机上安装任何恶意软件。
记者:我有位同事托我问你,插件或扩展是否也运行在沙盒中?
Fette:Google Chrome中的扩展是运行在沙盒中的,因为它们可以象正常网站一样执行各种操作,它们也是用HTML,JavaScript和CSS编写的。
目前插件尚未运行在沙盒中,但我们正准备将其移到沙盒中运行,最近我们宣布在Google Chrome中全面集成Adobe Flash就是其中的一步,以后在沙盒中运行Flash,谁也不会再说Flash不安全的坏话了。
记者:我稍微对Chrome沙盒做了一下了解,它在Windows XP以后的Windows版本中的工作机制有些不同,你能具体解释一下吗?还有就是,在新操作系统上使用Chrome是否有更多的好处呢?
Fette:在Windows Vista和更高的版本中,引入了一个额外的功能 – 锁定进程,即“完整性级别”,Google Chrome沙盒在XP和Vista上应用的正常限制外,还应用了一个低完整性。
虽然从理论上说,这个功能让Vista沙盒功能更强壮,但我们还不清楚对Chrome的真实攻击时,它的表现究竟有何不同。但是它的确增加了一层防御,作为一个纵深防御的做法,我们应该在支持它的Windows版本中使用完整性级别。
最后的想法
谈到浏览器设计时,我不是专家,但Charlie Miller是,如果他都不能攻破Chrome,我想大家都明白这意味着什么。我现在对他为什么不感谢Ian Fette有了更好的想法,因为Chrome太安全,让他在Pwn2Own大赛上只能转向苹果的产品。最后还要感谢Google Communications的Eitan Bencuya帮我联系上了Ian Fette。Chrome开发团队只注重三件事:稳定、速度和安全。用过Chrome浏览器的用户都对它的稳定和速度深有体会,但安全性究竟如何呢?