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

2482                                   Journal of Software  软件学报 Vol.32, No.8,  August 2021

                 攻击者可以实现用户追踪或个性化的社会工程.更进一步地,Staicu 等人                    [79] 发现:同源策略规则中,允许嵌入的跨
                 源图片也能被用来造成类似的隐私泄漏.
                    为了更直观地描述 CSRF 与 XSSI 攻击,我们总结了两种攻击所利用的同源策略规则、后果以及相关工作
                 (见表 4).
                        Table 4    Attacks on accessing cross-origin resources (attacker and victim site are cross-origin)
                                  表 4   获取跨源资源的攻击方式(攻击者网站与受害者网站不同源)
                             攻击            利用的同源策略规则                     后果                相关工作
                             preAuth-CSRF                      用户以攻击者账号浏览受害者网站,             Barth
                              (login CSRF)   允许发送跨源网络请求      攻击者能事后获取用户浏览历史等信息             等人 [11]
                       CSRF                                       攻击者以用户身份来修改             Sudhodanan
                              Auth-CSRF   允许发送跨源网络请求                                          [74]
                                                                 受害者网站服务器(如转账)             等人
                                          允许发送跨源网络请求;           攻击者以用户身份来读取用户在              Lekies
                             XSSI                                                             [12]
                                         允许嵌入跨源脚本(或图片)         受害者网站服务器数据(如联系人)            等人
                     注:CSRF 与 XSSI 分别为跨站请求伪造(cross-site request forgery)与跨站脚本注入(cross-site script inclusion)攻击的简称.
                    preAuth-CSRF,Auth-CSRF 与 XSSI 攻击的建立来自于两个不同的角度.
                    •   攻击时机:不同于 Auth-CSRF 与 XSSI 攻击,preAuth-CSRF 攻击发生在用户登录账号之前.不同的攻击
                        时机使得攻击者采用不同的攻击方式,并且攻击获利方式也存在不同,如 preAuth-CSRF 需要攻击者事
                        后登录自己账号来获取隐私数据.
                    •   攻击后果:攻击者网页利用 CSRF 攻击获取到的对不同源资源的访问权限是有限的.通常而言,CSRF 只
                        允许攻击者获取用户历史行为或者修改受害者网站的状态,并不能允许攻击者直接读取用户的数据
                        (如邮件网站中用户的联系人等信息).其本质原因在于:同源策略规则允许一个 frame 向任意源网站发
                        送请求,但不允许获取跨源网站返回的网络响应.XSSI 更进一步地考虑到同源策略规则允许 frame 内
                        嵌任意源的脚本,利用这一规则,将使得攻击者能够发起攻击来直接读取隐私数据.
                 3.3.2    防御方案
                    CSRF 与 XSSI 攻击得以发生的原因有两点:一是同源策略规则允许发送跨源网络请求与嵌入跨源脚本,二
                 是浏览器 cookie 机制使得攻击者 frame 可以通过受害者网站服务器的用户认证.应对 CSRF 与 XSSI 攻击,可以
                 从这两个方面着手.
                    •   首先,同源策略规则的增强可以应对 CSRF 与 XSSI 攻击.Barth 等人             [11] 指出,浏览器为同源策略安全增
                        加一个新的 HTTP 头:Referer.当一个 frame 发起网络请求时,浏览器将获取该 frame 的 URL,并将该 URL
                        作为 Referer 的值携带到网络请求中.尽管浏览器并未限制跨源网络请求,但是 Web 服务器可以根据
                        Referer 来进行同源检测,或着判断跨源网络请求是否来自于其信任的跨源网页.当发送的 frame 不被
                        认可时,Web 服务器将拒绝返回 XSSI 攻击所需的 JSON 与 JavaScript 文件,或者拒绝执行 CSRF 攻击
                        中所要求的操作(如转账).尽管 Referer 对同源策略进行了加强,但是却被认为是导致信息泄漏的另一
                        种方式  [80,81] ,其原因在于:一个网站可以通过 Referer 来判断用户通过其他哪些网站对其进行了访问,这
                        将有助于建立网站排行与追踪用户行为,但破坏了用户隐私.
                    •   其次,对浏览器 cookie 机制的增强可以应对 CSRF 与 XSSI 攻击.Barth 等人           [11] 认为,可以通过安全令牌
                        与 cookie 机制协作的方式来应对这些攻击.具体来说,一个 Web 应用可以在其所有 frame 的 URL 链接
                        中加入安全令牌.当确保安全令牌很难被攻击者 frame 所获取时,Web 应用服务器可以通过安全令牌进
                        行 cookie 验证后的第二次认证,用来判断网络请求是否来自于所允许的 frame.Web 应用同样可以在
                        frame 中使用 XMLHttpRequestAPI 来发送请求,并且同时携带上自定义的 HTTP 头与相应的值.当该自
                        定义的 HTTP 头与值不能被攻击者 frame 所获取时,Web 应用服务器将同样能够区分发送网络请求的
                        frame 是否应该被授权.Franken 等人      [82,83] 发现,目前的浏览器与浏览器扩展中实现了“阻止第三方
                        cookie”的功能.第三方 cookie 是指 frame 在网络请求中携带的跨源的 cookie,如 CSRF 与 XSSI 攻击中,
   195   196   197   198   199   200   201   202   203   204   205