Page 193 - 《软件学报》2021年第8期
P. 193
罗武 等:浏览器同源策略安全研究综述 2475
(1) 同一 frame 中第三方脚本的过度授权:一个 frame 中可能包含了第三方脚本.同源策略用承载它们的
frame(称之为宿主 frame)的源来判断这些第三方脚本可以访问的资源,这使得恶意的第三方脚本能够
自由地访问宿主 frame 所在源的任意资源.
(2) 同源不同 frame 的过度授权:同源策略为处于同一个源下的所有 frame 赋予相同的权限,然而,有些
Web 应用的特性,使得同源不同 frame 需要进行必须的隔离.例如在博客网站中,xyz.com/a/与 xyz.com/
b/分别代表了两个用户 a 和 b 的主页,对它们进行资源隔离是有必要的,而同源策略并不能适应这些
场景.
(3) 不同源 frame 的过度授权:目前,浏览器在发送网络请求时,会默认将用户的 cookie 携带到网络请求中,
一个恶意 frame 可以通过利用 cookie 机制来修改不同源服务器的状态,甚至是获取不同源的资源.
本节将对以上 3 类问题的现有研究工作进行总结分析,包括相应的攻击场景、安全威胁与防御方案.
3.1 第三方脚本的过度授权与防御
当 Web 应用程序的开发人员决定引入来自第三方提供者的 JavaScript 脚本时,同源策略不允许第三方脚本
被宿主 frame 读取,但是允许它以宿主 frame 的权限来执行(见第 1.2 节).一方面来说,恶意的第三方脚本提供者
可以直接访问宿主 frame 的所有资源,包括偷取敏感数据或修改网页内容;另一方面来说,非恶意的但是存在漏
洞的第三方脚本为攻击者攻击宿主 frame 提供了便利:攻击者可以以第三方脚本为跳板来实现对宿主 frame 的
攻击.本小节将首先介绍宿主 frame 引入第三方脚本的目的与第三方脚本的分类,然后分析第三方脚本过度授
权所带来的安全威胁,最后总结讨论现有防御方案的优缺点.
3.1.1 用途与分类
为了丰富功能与增强交互性,Web 应用广泛集成第三方脚本到其自身的网页中.Yue 等人 [34] 发现:96.9%的
[6]
网站包含来自其他源的脚本,平均每个网站包含 3.1 个第三方脚本.Nikiforakis 等人 更进一步地统计了
Alexatop 10k 网站中 10 个被引入最多的第三方脚本,并记录了这些第三方脚本提供的服务,以及在前 10k 个
Alexa 网站中的使用率.如表 3 所示,主流的第三方脚本通常提供了诸如 Web 分析(如 Google Analytics 和
addthis)、动态广告(如 GoogleAdSense)、社交网络(如 Facebook 和 Twitter)与用户追踪(如 Quantserve)等服务.
有些第三方脚本还提供了编程库(如 jQuery)与密码算法库(如 CryptoJS)等服务.
[6]
Table 3 Ten most popular third-party scripts used by Alexa top 10 000 Internet websites
[6]
表 3 Alexa top 10 000 网站中 10 大最受欢迎的第三方脚本
第三方脚本 提供的服务 在 Alexatop 10k 网站中的占比(%)
www.google-analytics.com/ga.js Web 分析 68.37
pagead2.googlesyndication.com/pagead/show_ads.js 动态广告 23.87
www.google-analytics.com/urchin.js Web 分析 17.32
connect.facebook.net/en_us/all.js 社交网络 16.82
platform.twitter.com/widgets.js 社交网络 13.87
s7.addthis.com/js/250/addthis_widget.js 社交网络与 Web 分析 12.68
edge.quantserve.com/quant.js Web 分析与用户追踪 11.98
b.scorecardresearch.com/beacon.js 市场研究 10.45
www.google.com/jsapi Google 辅助功能 10.14
ssl.google-analytics.com/ga.js Web 分析 10.12
3.1.2 安全威胁
一个 frame 引入大量的第三方脚本,意味着该 frame 具有更大的攻击面.我们首先来总结分析由引入第三方
脚本所带来的对宿主 frame 的新的攻击向量,包括以下 3 种.
(1) 第 1 类是第三方脚本劫持.
即网页开发者在编写宿主 frame 时可能出现编写错误,攻击者可以利用这些编写错误来使宿主 frame 加载
[6]
与运行攻击者的第三方脚本,进而攻击宿主 frame.Nikiforakis 等人 于 2012 年对 Alexa top10k 的网站进行了分
析,发现 88.45%的网站至少包含一个第三方脚本,最坏情况下有网站从 295 个第三方服务器中加载了脚本,并且