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广泛使用这两种机制来简化复杂的异步操作流程。 #### 第11篇 Chromium的沙盒Sandbox - **Sandbox概念**: - Sandboxing(沙盒)是一种安全机制,用于隔离应用程序的不同部分,限制它们访问系统的权限...
本文将深入剖析Chromium组件,尤其是渲染引擎和浏览器内核这两部分,以及其沙箱保护机制,分析它们在多场景下的安全风险,并提出相应的收敛方案。 首先,我们来看Chromium的两大核心组成部分:渲染引擎和浏览器内核...
在"playwright-sandbox"中,你不仅可以安全地运行剧作家脚本,还能利用其提供的日志记录和错误处理机制,方便地追踪测试过程中的问题。这对于调试和优化测试脚本至关重要。此外,项目可能还包含了示例脚本和文档,...
- **chrome-sandbox**:这是Chromium的安全沙箱机制,用于隔离进程,减少恶意代码对操作系统的影响,提高系统的安全性。 - **icudtl.dat**:这是Chromium使用的国际化数据文件,用于支持全球各种语言和字符集,...
1. **沙箱逃脱(Sandbox Escape)**:攻击者试图突破浏览器内部的安全机制,使恶意代码能够跳出沙箱环境,获取更高的系统权限。 2. **渲染器远程代码执行(Renderer RCE)**:当浏览器的渲染引擎存在漏洞时,攻击...
8. `chrome_elf.dll`:Chrome ELF模块,提供了安全特性,如沙箱机制,增强应用程序的安全性。 9. `libEGL.dll`:Embedded GL接口库,为CEF4Delphi提供OpenGL兼容的图形接口。 10. `cef_sandbox.lib`:CEF沙箱库,...
请注意,`--no-sandbox`选项降低了系统的安全性,因为它禁用了Chrome的沙箱机制。在生产环境中,不推荐这样做,因为这可能使系统更容易受到攻击。 接下来,我们来看如何在非root用户下启动Apache或Nginx服务器。...
7. **安全考虑**:理解Electron应用的安全模型,防止恶意代码的注入和数据泄露,如限制`nodeIntegration`和使用`sandbox`模式。 8. **性能优化**:探讨如何优化Electron应用的启动速度、内存占用和CPU利用率,提供...
为了实现这个功能,你需要熟悉CEF的异步回调机制,以及如何在C++和JavaScript之间传递数据。 此外,你可能还需要处理一些常见的任务,比如URL加载、页面事件的监听、资源加载的拦截以及自定义协议的注册。这些都是...
### Python + Selenium + Crontab 实现每日定时自动打卡功能 #### 一、背景与目的 ...此外,该自动化脚本还可以进一步扩展和完善,例如增加异常处理机制、邮件通知等功能,以适应更多复杂的需求场景。