11.2.5 同源检查不完善
危害:特权API暴露à任意代码执行
成因:扩展的extension API应该限制在特权域,例如chrome://等。但是如果攻击者可以通过某些特定的方式来访问域下的API,则依然可能产生安全问题。
安全建议:
包含特权API的域应当严格遵守安全规范,例如chrome://的链接不允许通过非同源网页访问。
11.2.6 Content Script劫持
危害:
信息泄露à高权限函数引用暴露
在不支持Content Script的浏览器(如IE)中,如果通过插件向页面注入代码,则应当十分小心。页面可以通过劫持注入的函数,并获取引用,导致敏感信息泄露。
安全建议:
在需要注入网页时,尽量给网页中注入的内容添加一个脚本无法计算的、各用户却不同的值,例如浏览器计算出的用户机器的MAC地址的哈希值。但是这个注入的内容也需要经过良好的加密,以免造成修复了Content Script劫持带来的问题又再次引入信息泄露的新问题。推荐将值加盐并使用单向散列函数对获取的用户值进行哈希运算。这样可以即保证根据各用户产生变化性,让javascript无法计算,又不会造成信息泄露。
11.2.7 配合切核策略+本地内部页XSS执行代码
危害:
特权域API泄露à任意代码执行
这里依然是百度浏览器的一个例子,百度浏览器在实现切核策略时,对通过FTP/UNC协议展示的HTML文件使用IE核心渲染。
而旧版本的百度浏览器的本地自带的文件(一些内部页)又存在XSS,XSS Filter在IE核心下一旦被绕过便可能导致任意代码执行。
安全建议:
浏览器在任何时刻都应当维持安全性,例如采用IE模式渲染时,应当开启IE提供的XSS Filter,而内部页面则建议使用固定的核心渲染,如果内部页面有需求可被其他页面打开,则打开后不应当跟随打开者的核心,而应当采用固定的渲染内核并配上合适的CSP策略。
11.2.8 下载服务器限制宽松
危害:
任意代码执行
浏览器在使用自家的下载服务器,下载并安装插件时,为确保安全,限制下载服务器时不应过于宽泛。例如旧版本的百度浏览器下载时限制下载服务器为*.baidu.com/*.crx,可以让导致攻击者找到一个百度域下的302跳转(形如:xxx.baidu.com/jumpto?http://eval.site/eval.crv)即可绕过该检测。
安全建议:
在设计下载部分代码的安全校验时,必须指定少而固定的列表,下载服务器不同于其他内容,不应当有如此宽泛的限制。
11.2.9 TLDs判定问题
危害:
信息泄露
在一些与域判断有关的插件中,可能存在顶级域判断的问题。由于顶级域不一定只有一个点号(如.com、.cn等),还可能有常见的两点(.com.cn、.net.cn等),因此许多插件可能会采用一个顶级域白名单依次判断。
在判断时,这个顶级域的白名单需要绝对精准,否则一些比较“偏门”的顶级域则不一定能识别,尤其是这些顶级域包含两个点号的时候,如果错误识别,则可能会被浏览器误将保存的信息填充到不该填充的欲中。
顶级域名表中有多个地方的顶级域,例如.ah.cn(安徽区域)、.bj.cn(北京区域),这些顶级域可能被误识别为.cn的TLD后导致出问题。
安全建议:
在判断时一定要选择最新的、完整的TLD列表去进行判断。在比对时,应当从长(点好多的)到短依次识别判断。
11.2.10 经典漏洞
危害:
浏览器崩溃、或任意代码执行
例如旧版的Firefox官方的切核插件匹配*.10086.cn/*这条规则切换IE内核时,如果攻击者指定在图片文件中src时,如果src大于65535字节会导致程序处理异常,使得整个浏览器崩溃。
其他的一些经典漏洞例如缓冲区溢出等,同样会导致各种严重问题。
安全建议:
使用插件时,尽量使用由官方出品的插件。而且使用时请尽量保持插件能够及时更新到最新版本。
作者:Lemon