Page 196 - 《软件学报》2021年第8期
P. 196
2478 Journal of Software 软件学报 Vol.32, No.8, August 2021
generator 特性来对消息通信进行封装,实现同步的资源共享.
(4) 第 4 类是基于 JavaScript 引擎的防御机制.
即通过对 JavaScript 引擎进行修改以实现宿主 frame 与第三方脚本的隔离.Dong 等人提出了基于 JavaScript
引擎的防御机制 AdSentry 系统 [54] .AdSentry 在浏览器中运行了一个影子 JavaScript 引擎.第三方脚本将运行在
该影子 JavaScript 引擎中,从而实现与宿主 frame 的隔离.第三方脚本与宿主 frame 的资源共享也需要利用消息
通信机制来实现.Meyerovich 等人与 Acker 等人先后提出了 ConScript [55] 与 WebJail [56] 来限制第三方资源.具体
来说,通过在 JavaScript 引擎中增加 API 来对原来 JavaScript 函数引入新的建议函数(advice function).当建议函
数存在时,JavaScript 引擎将会调用建议函数,否则调用原函数.宿主 frame 因此可以利用建议函数来限制第三方
脚本.
以上 4 类方案的基本思路归为两个角度.
• 实现语言上的隔离.第 1 类防御机制利用 JavaScript 语言的特性或者提出新的语言来实现隔离.这种方
式的优势在于便于资源共享,但是在可用性上是存在不足的.具体来说,这些机制需要对 JavaScript 所
有可能的对象引用都进行限制,JavaScript 语言的复杂性与动态性使得策略仲裁很难确保完备性.而且
JavaScript 与 HTML 在不断地更新,甚至不同浏览器在 JavaScriptAPI 实现上还可能有区别,这必然导致
这些机制很难实际采用.此外,对第三方脚本的重写还涉及到动态代码,如 eval 等,这将造成很大的运行
时开销.
• 实现系统上的隔离.后 3 类防御机制能实现系统上的隔离,其优势在于 JavaScript 与 HTML 的复杂性与
更新不会影响隔离机制.这些机制可以粗略地认为它们将第三方脚本转变为了第三方 frame,这将导致
直接函数调用与对象引用等能力的缺失.为保证第三方脚本的正常操作,这些机制必须提供额外的消
息通信机制(如 postMessage [57] )来允许第三方脚本与宿主 frame 之间的资源共享.但使用消息通信机制
会带来一些不足,比如第三方脚本原本的同步操作经转变为了异步操作,甚至可能需要第三方脚本自
己阻塞来等待响应消息的到来(如 Pivot [51] ).这种异步操作不仅会带来很大的性能开销,还需要考虑是
否对网页的业务逻辑造成影响.
3.2 同源不同frame的过度授权与防御
浏览器同源策略的策略实施依据为主体与客体的源是否一致,这意味着同源的不同 frame 将拥有相同的访
问控制权限,即都能访问该源的任意资源.然而,同源的不同 frame 在一些情况下需要赋予不同的权限.在这些情
况下,由于权限受限的 frame 可能通过访问同源且授权的 frame 来提升权限,同源策略将使得这些 frame 的权限
控制形同虚设.本小节将首先分析同源不同 frame 需要赋予不同权限的场景与对应的安全威胁,然后总结讨论
现有的一些防御方案的优缺点.
3.2.1 安全威胁
在一个网页中,同源的两个不同的 frame 并不一定是完全对等的,因而需要被赋予不同权限,主要包括以下 3
类情况.
(1) 第 1 类是同源但不同 URL 路径的 frame.
Moshchuk 等人 [58] 指出,同源策略无法实现在 URL 路径上的隔离.考虑分别来自于 https://www.facebook.
com/user1 与 https://www.facebook.com/user2 的两个同源 frame,它们代表着不同用户的主页,但却无法实现权限
[9]
上的隔离.Cao 等人 认为,同源策略需要支持更进一步的主体隔离.例如,一个 Web 应用包含有一个良好的
frame(a.com/benign)以及一个可能被攻击的 frame(a.com/malicious),Web 应用开发者可以利用 HTMLiframe 中
的 sandbox 关键字来限制后一个 frame 的权限,如不允许弹窗或不允许提交表单等.然而,若该被攻击的 frame 具
备执行 JavaScript 代码的权限,其可以访问良好的 frame 来实现弹窗或者提交表单的功能.Singh 等人 [13] 分析
cookie 的访问控制包含 URL 路径,而同源策略忽略 URL 路径的策略实施机制将会破坏 cookie 的访问控制.
Lerner 等人 [31] 发现,同源策略对同源不同 frame 的过度授权使得存档管理功能的 Web 应用受到了新的安全威
胁.目前,Internet 上的最大存档网站(web.archive.org)将其他网站(如 http://www.xyz.com)保存在诸如“https://