Page 197 - 《软件学报》2021年第8期
P. 197

罗武  等:浏览器同源策略安全研究综述                                                             2479


                 web.archive.org/web/20001110101700/http://www.xyz.com/”的路径上.被存档的网站的源是作为 URL 路径中的
                 一个目录,这使得任意两个被存档的网站将被认为是来自于同一个源(https://web.archive.org/).如此,攻击者网
                 页可以事先编写用来修改受害者网站内容的代码,在网页被存档后,该代码将修改受害者网页内容,从而影响诸
                 如利用存档网站来进行法律取证的行为的正确性.
                    (2)  第 2 类是同源但在网页中处于不同位置的 frame.
                    Son 等人 [14] 通过分析目前网站在使用 postMessageAPI     [57] 上的不足,指出消息接收方需要使用基于 frame 的
                 消息过滤方案.该方案通过消息监听函数参数 event 中的 source 成员变量来完成更进一步的消息过滤,该变量是
                 发送消息 frame 的引用,代表了其在该网页的 frame 结构中的位置.因此,即使该网页中存在另一个与消息发送方
                 同源的其他 frame,该 frame 同样不能通过消息接收方的消息过滤方案.Barth 等人                  [59] 认为:在一个网页中,一个
                 frame 只能对其子 frame 或者后代 frame 的 URL 赋值来重新加载 frame(浏览器中称这种行为为导航 Nagivate),
                 其他兄弟 frame 是不具备导航权限的.然而,不论是基于 frame 的消息过滤方案还是导航机制,都会因为同源策略
                 的过度授权而被破坏.在同源策略的支撑下,一个不具备合法消息发送与导航权限的 frame,可以访问相应的被
                 授权的同源 frame 来获取到对应的权限.
                    (3)  第 3 类是浏览器其他安全策略机制参与下的同源不同 frame.
                    Stefan 等人 [60] 依据强制访问控制机制设计了一种增强的安全策略 COWL,并被引入为 W3C 标准的一部
                 分 [61] .Frame 需要处理其他源的 frame 的敏感数据,为了保证数据隐私,COWL 为处理数据的 frame 携带一个安
                 全标签来表明其安全级别,并对某些敏感操作(如发送网络请求)进行限制.同源的两个不同 frame 可能因为历史
                 行为的不同具备不同的安全标签,并因此具备不同的访问控制权限.由于同源策略的过度授权,除非进行类似
                 frame 级别的安全隔离,COWL 的策略实施将会被破坏.Somé 等人                  [10] 发现,浏览器的内容安全策略(content
                 security policy,简称 CSP)机制会被同源策略所破坏.内容安全策略允许 frame 的开发者通过设定 HTTP 头来指
                 定 frame 的合法行为,如仅仅允许加载来自自身源的资源、不允许可能导致漏洞的 eval 操作等.通过对 Alexatop
                 10k 网站的内容安全策略协议进行分析,Somé 等人发现:在实施有内容安全策略的网站中,存在 72%的网页包含
                 有同源或同域名的子 frame,并且父子 frame 的内容安全策略是不一致的.内容安全策略的不一致,意味着两个
                 frame 被赋予了不同的权限,一个受限的 frame 同样能够借助授权的同源 frame 来进行权限提升.
                 3.2.2    防御方案
                    为应对同源不同 frame 的过度授权,研究者们从以下 3 个角度来设计安全防御机制.
                    (1)  第 1 类是细粒度的同源策略.
                    即在同源策略基础上,为主客体增加新的安全属性来区分同源不同 frame.特别的,不同 URL 路径的 frame
                 可以设置不同的允许访问列表,从而解决同源策略对同源不同 frame 的过度授权问题.Moshchuk 等人                          [58] 设计了
                 细粒度的同源策略规则来实施基于内容的隔离策略.基于内容的隔离策略允许内容的所有者指定一个白名单.
                 在浏览器环境中,Alice 可以将其网页 http://blog.com/alice/index.html 的白名单设置为 Trust:list=http://blog.com/
                 alice/*,安全监控器将认为该网页内容与来自于 http://blog.com/alice 目录下的网页是同一个主体,从而允许访
                 问,但拒绝来自于 http://blog.com/网页的访问.除了可以实现基于 URL 路径的访问控制外,基于内容的隔离策略
                 甚至能够使得两个不同源的网页被视作同一主体,这将有利于网页的资源共享需求.Jayaraman 等人                             [62] 允许 Web
                 服务器根据内容的可信度来为内容设置安全标签,并且将可信度不同的内容放置在不同环(ring)上.在策略实施
                 时,同时确保低特权的环的主体不能访问高特权环的内容.Luo 等人                    [63] 认为,基于环的方案没有处理不同主体(如
                 同源不同 frame)在发送网络请求等行为上的不同,因此提出了基于能力(capability)的访问控制模型来加固同源
                 策略.该访问控制模型中,主体的安全属性是源与能力的集合.能力被定义为安全令牌(token).在策略实施时,确
                 保只有具有特定 token 的主体才能访问对应的资源.主体可以细粒度到 frame 甚至为 DOM 元素级别.Steven 等
                 人 [64] 、Cox 等人 [65] 、Karlof 等人 [66] 与 Dong 等人 [67] 也在不同角度对同源策略进行细粒度策略增强来解决同源
                 不同 frame 的过度授权问题.
                    (2)  第 2 类是动态的同源策略.
   192   193   194   195   196   197   198   199   200   201   202