Chromium学习3(安全)

根据《The Security Architecture of the Chromium Browser》论文完成

browser kernel和rendering engine

Chromium有两个模块,两个模块在不同的保护域中:browser kernel和rendering engine,其中browser kernel用于与操作系统交互,rendering engine在sandbox中运行(拥有受限制的特权)

browser kernel代表用户运行,rendering engine模块代表web运行。


Chromium的架构将浏览器不同组件在browser kernel和rendering engine之间进行分配,将高风险部分(如HTML parser、JS 虚拟机、DOM)放到rendering engine的沙盒中。Browser kernel用于管理永久资源(如cookie、password database、和操作系统交互以接收用户输入、输出信息到屏幕、访问网络),并提供API供rendering engine调用,维护期分配给各个rendering engine的权限信息(如各个rendering engine允许上传的文件列表)。

Chromium的架构依赖rendering engine单独实现browser的安全策略--same-origin policy。browser kernel仅仅进行粗粒度的控制。

本方案无法阻止攻击者在攻占了rendering engine的情形下攻击其他web站点(如获取他们的cookie);但是阻止了攻击者读、写用户文件系统。

Browser Kernel暴露了API,使得rendering engine能够用来发起网络请求、访问持久存储、在用户屏幕上显示图形。

Rendering web content按下列顺序处理:parsing、建立DOM的in-memory representation, lay out the document graphically,根据script指令做出响应以修改document。

Browser Kernel和Rendering engine之间的分工如下,其中很多parsing和decoding工作由rendering engine完成,是因为这些任务从历史角度看来,是source of a large number of browser vulnerabilities。一个例外是network stack是由Browser Kernel实现的,browser kernel负责解析HTTP response header,调用gzip或bzip2解码器来解压缩HTTP responses(如果其是使用Content-Encoding的),这些任务可以分配给render engine,但是会是的network stack更为负责并且降低性能。

Chromium也使用rendering engine来显示一些可信内容(如HTTPS证书错误的警告、钓鱼网站的警告),但是这个是由一个独立的rendering engine完成的,与处理web 内容的rendering engine不同。但是存在一个例外,Web Inspector,其展示可信内容,是由render engine展示的(该render engine也显示其他web 内容),这是因为Web inspector的职责所限,其与其所inspecting的页面交互。

plug-ins:Chromium中,每个plug-in运行在一个单独的host process。为了与现有网站兼容,browser plug-in无法部署在rendering engine中,因为plug-in厂商期望的是在整个browser中至多有一个plug-in实例。默认情况下,每个plug-in运行在sandbox之外,以用户的所有权限运行。从而攻击者可以利用plug-in的漏洞,在用户机器上安装恶意软件。厂商在之后可以编写plug-in,使其运行在sandbox中,用户也可以为browser加上选项--safe-plugins,使plugin运行(但是只是实现阶段,可能会不稳定及不可预期的行为,如无法更新)

SandBox

Sandbox限制了rendering engine进程调用一些系统调用。

目标:理想情况下,sandbox将强制rendering engine使用browser kernel API来与外部进行交互。很多DOM方法,如appendChild可以在rendering engine内完成;其他一些DOM方法,如XMLHttpRequest的send方法,要求rendering engine不仅操纵器内部状态,honest rendering engine可以使用browser kernel提供的接口来实现该功能。sandbox的最终目标是恶意的rendering engine仍然只能通过browser kernel的接口和文件系统交互。

实现:当前,Chromium依赖Windows-specific特性来sandbox rendering engine。rendering engine并没有使用Windows security token,而是使用一个受限的security token,当rendering engine尝试访问一个secureable object时,Windows Security Manager检查rendering engine的securitytoken是否有足够的权限来访问该object,Sandbox限制rendering engine的security token,是的token check在大多数情况下fail。

不足: sandbox存在下列不足之处:1. FAT32文件系统不支持访问控制列表,没有访问控制列表,Windows security manager将忽略进程的security token,从而rendering engine可以读写FAT32文件(不受权限控制)。 2. 错误配置的object,如果一个object的discretionary access control list(DACL)为NULL,Windows security manager也将忽略token,直接访问;NULL DACL很少出现,而且在NTFS文件系统中,NULL DACL被极大缓解,因为Sandbox强制Windows检查rendering engine是否有访问目标文件父目录的权限。

Browser kernel接口

1.  用户交互方面,操作系统提供接口,使得应用能够和用户交互,但是这些用户一般不暴露给不可靠的应用(例如,下X windows系统中,在X server上创建window的能力,意味着能够获取用户键盘输入)

渲染:rendering engine是内存中完成渲染,然后将bitmap交给browser kernel,由其完成真正的渲染;

用户输入:操作系统将用户输入事件传递至browser kernel;browser kernel根据当前focused的元素,确定该事件派发给谁。

2. 永久存储

上传文件:仅上传用户选择的文件,。

下载文件:仅能下载到用户选择的区域,特定的文件类型不被允许,如.local,.ini等

3.网络

能够访问http,https,ftp的,但是一般的rendering engine不能请求file开头的URL,用户可在地址栏中输入file开头的url进行访问,该访问是在专用的rendering engine中完成的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容