Chromium允许渲染进程运行在Sandbox里,这样即便代码存在漏洞被网页利用了,也不会对系统造成威胁。
Chromium的Sandbox机制主要依赖于操作系统的安全机制,包括Restricted Token,Job Object,Windows Desktop,还有Integrity Level(Vista开始)。
Restricted Token
Job Object
Restricted Token是基于DACL安全机制的,对于不能使用DACL控制访问权限的对象,则可以使用Job Object来实现。Job可以控制进程对USER Handle以及粘贴板的访问等等,特别是控制激活进程数(JOB_OBJECT_LIMIT_ACTIVE_PROCESS设为1,就可以防止创建子进程了)。
Job还有如下特性:
- 关闭Job句柄还可以关闭所有包含的进程(JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE);
- 通过完成端口,可以知道Job包含进程数变化的情况(JOBOBJECT_ASSOCIATE_COMPLETION_PORT);
- Job可以控制进程异常崩溃时,是否弹出错误报告和调试提示(JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION);
- ...
Desktop Object
同一个Desktop内的窗口是可以相互发消息的,为了防止恶意代码通过Windows消息的方式窃取其它进程的窗口内容,Chromium把Render进程放到了另一个Desktop上,这跟登录和系统服务都在另一个Desktop是一样的道理。
我们平时说的Windows服务程序不能有界面,其实不是API的限制,而是因为界面会运行在另一个不可见的Desktop上,用户根本无法交互。
Integrity Level
在Vista下,还可以使用Integrity Level来控制进程的运行级别。比如IE7的保护模式就是运行在Low Integrity Level的。使用IL比较简单,因为大部分对象默认访问权限都是Medium IL,如果运行在Low IL的进程访问就会被拒绝,不管当前用户身份。
甚至低IL的进程也不能向高IL的进程发送Windows消息,即便是在同一个Desktop下。
受限进程如何访问资源?
世界总有例外情况,特别是很多现有代码不能修改的情况下,如何允许受限进程访问外部资源? 有几个办法:
1. 使用两个Token,一个是Initial Token(具有登录用户的正常权限),另一个是Lockdown Token(即Restricted Token,去掉了大部分权限)。
使用Lockdown Token作为primary access token来创建受限进程,然后设置(Impersonate)其主线程的Token为Initial Token。启动后,进程可以正常访问系统资源来完成初始化。然后当初始化完毕,进程要主动切换到Lockdown Token,并关闭Initial Token以及初始化时打开的相关句柄。
2. 通过拦截受限进程里的Win API访问,并通过IPC转给控制进程。根据Policy设置,决定是否允许操作,以决定继续代为调用并返回结果或者直接拒绝。
3. 控制进程负责打开受限资源(USER Handle等),并把句柄通过IPC机制传递给受限进程,这样受限进程就可以使用受限资源了。
参考
Chromium的Sandbox设计文档
Windows Vista for Developers – Part 4 – User Account Control
Understanding and Working in Protected Mode Internet Explorer
How DACLs Control Access to an Object
分享到:
相关推荐
描述了chromium开源浏览器中的安全机制,沙箱保护,多进程机制
在所有基于Chromium和Chrome的应用程序中都可以找到沙箱状态页面:chrome://沙盒查看您的Chrome沙盒状态:chrome:// sandbox / (右键单击,复制粘贴URL: Chrome甚至不允许您超链接到该页面! )危险基于...
众所周知, chromium 是多进程框架的,整个 chromium 浏览器包括四类进程: browse 主进程、 render 渲染进程、 GPU 进程和插件进程。本文所要讲述的 chromium 事件处理流程 主要牵涉到其中的两种进程: browser ...
chromium命令行参数1
ungoogled-chromium是Google Chromium,不依赖于Google Web服务。 ungoogled-chromium尽可能保留默认的Chromium体验。与其他具有Web浏览器愿景的其他Chromium分支不同,ungoogled-chromium本质上是Chromium的直接...
chromium离线安装版49 x86 32位windows xp 2003 亲测好用.chromium 不会默认上传您的用户数据,且性能比同版本chrome强10%。差不多可以说算得上是xp 2003 下最好用的 浏览器了
chromium-linux.zip
该文件属于Chromium 58版本的编译配置文档,其中,包含每一项参数的说明。 请注意,该文档是通过gn args --list out/debug生成的,如果你已下载Chromium源码,可以手动生成,不必下载。
SwitchyOmega-Chromium
SwitchyOmega_Chromium插件
LICENSES.chromium
Chromium浏览器官方版是一个由Google主导开发的网页浏览器,Chromium浏览器官方版是Google为发展Google Chrome而开启的计划,所以Chromium浏览器相当于Chrome的工程版或称实验版,新功能会率先在Chromium上实现,待...
SwitchyOmega_Chromium.crx
Chromium离线安装包,适用于树莓派。我的博客中有教程。
断断续续下载chromium代码花了1周左右,代码约15G左右,其中遇到power shell的问题,遇到python的问题。最终编译花了11:30分。相比于Linux下的编译慢很多,系统运行的稳定性和速度也差很多。打算研究源码,一起分享...
C# 使用chromium内核浏览器源码 When I hit a web site which I can not access because of a web filter, one of my options is to use the original Tor Browser which is a custom version of Firefox and I can...
Chromium Nightly Updater 1.1
SwitchyOmega_Chromium.zip
Chromium网页渲染技术,更多信息点击进入:http://0xcc0xcd.com
chromium开发教程.docx