Page 191 - 《软件学报》2021年第8期
P. 191
罗武 等:浏览器同源策略安全研究综述 2473
够获得受害者网站网页的引用;若同源策略被破坏,攻击者代码将能通过该引用来访问受害者网站网
页的资源,包括 DOM,JavaScript 与 cookie 等,若用户已经在受害者网站网页中登录,攻击者代码将能获
取用户在受害者网站中的隐私数据与执行私有操作.
(2) 用户在其浏览器上访问了攻击者网站网页,攻击者意图伪装成用户向受害者网站服务器发送恶意的
网络请求;该场景要求用户事先在受害者网页中进行了登录,并且在攻击发生时,用户在受害者网站
中的 cookie 没有过期.
(3) 用户在其浏览器上访问了受害者网站网页,受害者网站网页错误地引用了攻击者网站的资源,如引用
了攻击者网站的第三方 JavaScript 脚本来完成诸如广告、网站分析等功能.
"
!
#
用户浏览器
Fig.2 Threat model for researches on same-origin policy, including three roles and three attack scenarios
图 2 同源策略研究的威胁模型,包括 3 类角色与 3 种攻击场景
特别地,第 1 类场景需要攻击者网页与受害者网页处于同一浏览实例中,存在两种途径来实现该目标.
• 攻击者网页内嵌(或弹出)受害者网页:攻击者通过钓鱼攻击等方式,使得受害者用户访问了攻击者域
名下的某个网址,该恶意网址对应的攻击者网页利用 HTML 中的 iframe 标签或 window.open API 嵌入
了受害者网页作为子 frame.注意:攻击者可以将子 frame 设置为不可见,使得受害者用户无法直观观
察到.
• 受害者网页内嵌(或弹出)攻击者网页:用户正常地访问了受害者网站的网址,该受害者网页为完成诸
如用户追踪与分析、网页性能分析等任务,主动嵌入了攻击者网页作为第三方 frame.
2.1.2 敌手模型
根据以上研究场景,当攻击者的恶意代码在受害者用户的浏览器中执行时,攻击者将尝试绕过同源策略来
访问用户在不同源的受害者网站中的资源.根据攻击者所具备的攻击能力,我们定义两种不同的敌手模型.
(1) 策略攻击者:攻击者了解浏览器同源策略的规则,尝试找到同源策略规则中未覆盖到的行为或者利用
现有跨源/跨域通信机制来绕过同源策略,以成功访问受害者网页的资源.若用户在受害者网页中进
行了登录,或者在攻击发生时用户的 cookie 没有过期,策略攻击者将能够访问用户在受害者网页中的
隐私数据,甚至伪装为用户向受害者网站服务器发送恶意请求(如转账).
(2) 内存攻击者:攻击者了解浏览器中的 JavaScript 引擎的原理,并且该 JavaScript 引擎中存在漏洞,使得攻
击者能够具备有操作内存的权限,如修改浏览器的内存数据,甚至于发起代码注入或者代码重用攻击
来以浏览器的身份执行任意代码.内存攻击者可以认为能够攻击浏览器,在这种情况下,浏览器的同
源策略很容易被绕过.
注意,本文仅考虑针对浏览器同源策略安全的相关攻防机制,因此并不考虑由于受害者网站网页代码的漏
洞(如跨站脚本攻击 XSS [26−29] )所导致的跨源资源访问与数据泄漏.特别的,由于操作系统所提供的进程间内存
隔离,本文敌手模型中的内存攻击者必须要求攻击者代码与受害者网页位于同一个进程内.攻击者通过发起内
存攻击来控制该进程,进而绕过或欺骗同源策略来访问受害者网页资源.根据浏览器的多进程模型 [24,25] ,网页代
码在渲染进程(renderer process)中执行,并且利用操作系统提供的沙箱机制对渲染进程进行限制,包括提供独立
的命名空间甚至限制允许调用的系统调用.因此,渲染进程将不得不通过 IPC 消息与位于后台的浏览器内核进
程(browser kernel process)通信来完成特权操作,如操作文件系统、网络以及传感器等.然而,浏览器的多进程模