`
optman
  • 浏览: 44627 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Chromium的Sandbox机制

阅读更多

Chromium允许渲染进程运行在Sandbox里,这样即便代码存在漏洞被网页利用了,也不会对系统造成威胁。


Chromium的Sandbox机制主要依赖于操作系统的安全机制,包括Restricted Token,Job Object,Windows Desktop,还有Integrity Level(Vista开始)。 

Restricted Token

Restricted Token继承自当前登录用户的Access Token,然后去掉了几乎大部分的权限(groups和privileges),使用该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




分享到:
评论

相关推荐

    WebKit和Chromium源码及原理剖析.pdf

    - Chromium广泛使用这两种机制来简化复杂的异步操作流程。 #### 第11篇 Chromium的沙盒Sandbox - **Sandbox概念**: - Sandboxing(沙盒)是一种安全机制,用于隔离应用程序的不同部分,限制它们访问系统的权限...

    攻防启示:Chromium组件风险剖析与收敛.pdf

    本文将深入剖析Chromium组件,尤其是渲染引擎和浏览器内核这两部分,以及其沙箱保护机制,分析它们在多场景下的安全风险,并提出相应的收敛方案。 首先,我们来看Chromium的两大核心组成部分:渲染引擎和浏览器内核...

    playwright-sandbox:这是一个实验性项目。 :radioactive_selector:

    在"playwright-sandbox"中,你不仅可以安全地运行剧作家脚本,还能利用其提供的日志记录和错误处理机制,方便地追踪测试过程中的问题。这对于调试和优化测试脚本至关重要。此外,项目可能还包含了示例脚本和文档,...

    electron-v9.2.0-linux-x64.zip

    - **chrome-sandbox**:这是Chromium的安全沙箱机制,用于隔离进程,减少恶意代码对操作系统的影响,提高系统的安全性。 - **icudtl.dat**:这是Chromium使用的国际化数据文件,用于支持全球各种语言和字符集,...

    信息安全_数据安全_5_ZN2018_WV_-_Introduction_into_browser_hacking.pdf

    1. **沙箱逃脱(Sandbox Escape)**:攻击者试图突破浏览器内部的安全机制,使恶意代码能够跳出沙箱环境,获取更高的系统权限。 2. **渲染器远程代码执行(Renderer RCE)**:当浏览器的渲染引擎存在漏洞时,攻击...

    CEF4Delphi 74.1.19 支持MP3播放的X32支持文件!

    8. `chrome_elf.dll`:Chrome ELF模块,提供了安全特性,如沙箱机制,增强应用程序的安全性。 9. `libEGL.dll`:Embedded GL接口库,为CEF4Delphi提供OpenGL兼容的图形接口。 10. `cef_sandbox.lib`:CEF沙箱库,...

    Linux 解决Deepin无法在root用户启动Google Chrome浏览器的问题

    请注意,`--no-sandbox`选项降低了系统的安全性,因为它禁用了Chrome的沙箱机制。在生产环境中,不推荐这样做,因为这可能使系统更容易受到攻击。 接下来,我们来看如何在非root用户下启动Apache或Nginx服务器。...

    electron-learn.zip

    7. **安全考虑**:理解Electron应用的安全模型,防止恶意代码的注入和数据泄露,如限制`nodeIntegration`和使用`sandbox`模式。 8. **性能优化**:探讨如何优化Electron应用的启动速度、内存占用和CPU利用率,提供...

    libcef3+MFC最简单的demo

    为了实现这个功能,你需要熟悉CEF的异步回调机制,以及如何在C++和JavaScript之间传递数据。 此外,你可能还需要处理一些常见的任务,比如URL加载、页面事件的监听、资源加载的拦截以及自定义协议的注册。这些都是...

    Python + selenium + crontab实现每日定时自动打卡功能

    ### Python + Selenium + Crontab 实现每日定时自动打卡功能 #### 一、背景与目的 ...此外,该自动化脚本还可以进一步扩展和完善,例如增加异常处理机制、邮件通知等功能,以适应更多复杂的需求场景。

Global site tag (gtag.js) - Google Analytics