google chrome extension 安全机制小记

来源:互联网 发布:php采集源码 编辑:程序博客网 时间:2024/06/05 00:39

转载请注明出处:http://blog.csdn.net/awebkit


最近看了《Protecting Browsers from Extension Vulnerabilities》,里面讲解了google chrome extension所采用的安全机制,记录如下。

文章主要讨论针对那些没有恶意但是有缺陷,而缺陷会被利用的扩展,浏览器应该提供什么样的保护措施。


首先给出了Firefox扩展存在的一些问题:扩展具有和浏览器同等的权限。扩展有完全的权限访问浏览器内部和用户的操作系统。扩展可以改变浏览器的功能,修改网页的行为,执行任意代码,访问文件系统。

Firefox扩展具有这样两个危险的性质:高权限和不可信网页内容的丰富的操作。这导致可能会有如下的攻击:

1. cross-site scripting (跨页面脚本)。比如扩展在执行eval或者document.write的时候没有检查输入,而输入可能是一段恶意脚本。Firefox现在的做法是提供了沙漏技术的API:evalInSandbox。这时执行的脚本就不会获取扩展的权限。这有用,但并非总是有用。

2. Replacing Native APIs(替换原始API)。大意是说网页可以定义DOM API,然后引导扩展来使用这些API。

3. JavaScript Capability Leaks(JavaScript能力泄漏)。大意是说JavaScript泄漏了一个对象,会被攻击者利用,控制扩展。

4. 综合内容。如扩展需要调用HTTP返回的响应,攻击者就可以通过伪造HTTP响应,控制扩展。


然后文章对25个最流行的扩展进行了测试,发现大部分的扩展都存在权限被给的过高了,很多是用不上的。


最后就推出google chrome的extension机制。

1. 最低权限。

google chrome extension需要在manifest里面声明权限。如下

{"name": "Google Mail Checker","description": "Displays the number of unreadmessages...","version": "1.2","background_page": "background.html","permissions": ["tabs","http://*.google.com/","https://*.google.com/"],"browser_action": {"default_title": ""},"icons": {"128": "icon_128.png"}
声明的权限有:

A. 需要执行的任意代码。
B. 需要访问的网页。

C. 需要用到的扩展API。

但是开发人员更喜欢最大化权限,所以需要在用户体验上进行一些鼓励。当extension需要最大化的权限的话,需要和google签约,否则这些扩展不能出现在google控制的gallary里面。mozilla使用人工检查扩展。最小权限的扩展会缩短检查时间。

从任意网站下载的扩展的安装同执行本地可执行程序是一样的机制。


2. 权限分离。

这里主要就是把一个扩展分成了好几层:content scripts, extension core, native binary



3. 分离机制。

这里的分离我看主要是多进程模型,扩展运行在自己的进程空间,和浏览器分离。


从文章来看,google chrome extension安全机制确实做的比Firefox等牛啊!

原创粉丝点击