简介
沙箱模型技术是浏览器和其他应用程序中保护安全的一种组件关系设计模式,最初发明人为GreenBorder公司。2007年5月,谷歌公司收购了该公司,也将此项专利应用于chrome浏览器的研发中。
背景
一般而言,对于网络上的网页中的JavaScript代码和插件都是不受信的(除非是经过认证的网站),特别是一些故意设计侵入浏览器运行的主机代码更是非常危险,通过一些手段或者浏览器中的漏洞,这些代码可能获取了主机的管理权限,这对主机系统来说是非常危险的,所以保证网页本身之外,还需要保证浏览器和浏览器所在的系统不存在危险。
对于网络上的网页,浏览器认为他们是不安全的,因为网页总是存在各种可能性,也许是无意的或有意的攻击。如果有一种机制,将网页的运行限制在一个特定的环境中,也就是一个沙箱中,使它只能访问有限的功能。那么,即使网页工作的渲染引擎被攻击,它也不能够获取渲染引擎工作的主机系统中的任何权限,这一思想就是沙箱模型。
原理
在Windows系统中,浏览器结合了DEP、ASLR、SafeSEH等操作系统提供的保护技术,用于对抗内存攻击。与此同时,浏览器开发商还发展出多进程架构,使得安全性又有了很大的提高。(注:由于沙箱模型严重依赖操作系统提供的技术,而不同的操作系统提供的安全技术是不一样的,这就意味着不同操作系统上的实现是不一致的。)
Google Chrome是第一个采取多进程架构的浏览器。Chrome的主要进程氛围:浏览器进程,渲染进程,插件进程、拓展进程。插件进程如flash、pdf等于浏览器进程严格隔离,因此不会互相影响。
Chrome的渲染引擎由SandBox隔离,网页代码要与浏览器内核进程通信、与操作系统通信都需要通过IPC channel,在其中会进行一些安全检查。
受限环境只能被某些或者很少的系统调用而且不能直接访问用户数据。
以下是Chrome实现的一个相对完整的SandBox:
沙箱模型工作的基本单位就是进程。每一个进程对应一个沙箱。相对于单进程浏览器,在发生崩溃时,多进程浏览器只会崩溃当前的Tab页,而单进程浏览器则会崩溃整个浏览器进程。这对于用户体验式很大的提升。
参考资料:
《白帽子讲Web安全》 —— 吴翰清