2012年(272)
分类: 系统运维
2012-06-26 13:30:45
在第二次浏览器大战即将拉开序幕之时,微软除了推广IE外,还在研究一个下一代的浏览器:Gazelle
paper放出来 也有一个月了,从它公布开始我就一直在关注。 Gazelle 是一个专门为安全设计的浏览器,或者说大部分目的是为了解决现在混乱的安全问题。
前两天刚结束的
Pwn2own 2009 上,Google
Chrome 成为了唯一幸存的浏览器,就是由于其采用了多进程、沙箱模式的设计。而Gazelle
同样也是采用这种设计,但是它比Google
Chrome 做的更加彻底。
Gazelle 重新绷紧了SOP,页面里的任意元素,都会审计其源地址,如果要执行cross的操作,则会经过IPC进行检查,在此之外,每个进程都有sandbox来保证不会影响到其他进程。
假设
上嵌入了一个来自的iframe,那么这个iframe就会存在于另外一个浏览器进程里面,而不是在这个进程里面。 如果这个iframe里面挂了一个马,或者是其他恶意代码,那么也只会影响到这个进程,由于sandbox的限制,不会影响到浏览器内核以及其他进程。
其实类似的设计在IE8中已经出现了,IE8就采取了多进程,如果其中一个页面崩溃,只会崩溃那个tab页,而不会影响到其他tab页或者是整个浏览器。 但是IE8
在 Pwn2Own 上被攻破了,应该是由于缺乏 sandbox的原因。
Gazelle 也是采用了IE的 Trident 作为渲染引擎,一个比较重要的概念就是 Browser
Instance,
Trident 是在
Browser Instance 中进行渲染的,即便某一个
Browser Instance 被攻击了,由于sandbox的保护,限制了 Trident 对任何浏览器内核( Browser
Kernel)中的敏感API进行调用, 所以也就会导致像
Google Chrome 那种有内存漏洞但是无法利用的情况。
同时Gazelle
把plugins同浏览器进程区分开,plugins只能访问系统资源,插件和浏览器实例的交互需要通过浏览器内核,走IPC(进程间通信),不能直接访问。
在SOP方面,Gazelle 区分了每个对象的来源,细粒度的好处就是可以把原来很多混在一起的调用独立出来,从而可以对这些行为进行检查。 比如在目前的浏览器中,http下的script能够操作https下的对象,在Gazelle 中将解决这一问题。
跨域的标签像img、stylesheet、iframe、script,都将根据各自的来源存在于不同的实例(Browser
Instance)中。这种区分将有效的缓解一些跨域的漏洞。
Gazelle 甚至试图去解决一些视觉上的欺骗攻击,比如clickjacking等,通过对页面对象的访问控制以及来源检查来试图做到这一点。
不过做了许多安全措施,在性能上不是没有损耗的。和目前的IE对比起来,可以看到性能的损失还是比较大的。用户体验上也有待检验。作为一个在实验室里的模型,Gazelle在安全方面的功能是值得期待的。希望能得到进一步的消息,期待beta版能够早点出来。