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 个第三方服务器中加载了脚本,并且
   188   189   190   191   192   193   194   195   196   197   198