北方天空下

i am not a man of too many faces,the mask i wear is one...

Avatar

关于Chrome的“沙盒”安全性的分析

google的漫画和网络上的评论已经说了很多了,今天下午自己分析了一下目前chrome中的这个沙盒技术。

1.在vista下tab的进程运行在低MIC级别,见Integrity列为Low:

这类似于在vista系统下IE7的“IE保护模式”,因为默认情况下高MIC级别的进程不响应低MIC级别进程的窗口消息,从而避免一些核心进程在浏览器遭到劫持后,被攻击,如窗口粉碎工具。同时低MIC级别的进程在vista下不能修改一些vista系统关键对象,如敏感注册表和文件位置。chrome这一套机制比较靠谱,充分利用vista系统的安全性。


不过chrome的主进程和插件进程是运行在Medium级别的,chrome将插件做为独立的进程来维持,有助于提高浏览器稳定性,插件或者tab挂掉不会导致整个浏览器崩溃。

那么有人问xp下怎么办?xp下没有MIC这套机制,于是chrome在进程权限上做文章:


2.打开进程管理器你会发现,chrome的每个tab进程实际上是个作业job(简单来讲就是一个可以容纳多个进程的容器),从开发角度来说,对于job可以进行一个更有效的权限限制程序“边界”的限定。每个tab的作业只容纳了一个进程。用PE打开该job查看详细信息。我们打开一个tab进程,查看权限标签页:发现进程没有特权,而权限列表中很多被设置为Deny。

这说明当被访问资源(注册表,文件)的ACL中如果明确要求具有管理员或者高权限才可以操作的情况下,tab进程是不能修改这些资源的。

如何做到的呢?我们前面说了,这是通过作业来实现的,windowsAPI在创建作业进程的时候可以使用参数将job这个单位的一些特定权限进行限制(可配置的),同样,我们打开一个tab进程,切换到job标签页(普通进程是没有的),查看下面limite的列表,发现该job的很多行为被限制了:
包括:仅运行一个活跃进程工作;不运行进程创建Desktop对象;不允许修改显示设置;不允许进程使得windows退出、关机等;用户对象读取限制;对于剪贴板的读写操作的限制,管理员权限操作限制等,从而实现这个“沙盒”:

就目前的观察来看,我猜测chrome还没有完全实现“虚拟运行环境”这个意义上的沙盒(不过也许是我没了解到细节),也没有看到驱动的工作模式。

就上述两点来说,已经比ie6,和xp系统下的ie7(xp系统下没有UAC从而不支持vista的IE保护模式)安全了很多。

chrome的安装程序应该自己给系统加个低权限用户运行

太深奥~

评论已关闭