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

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

                 得攻击者网页在 Apache 服务器端远程执行代码.此外,CORS 没有对简单请求 HTTP 头信息的总字段进行限制,
                 而浏览器通常对 HTTP 请求长度存在限制,超过长度限制将返回 HTTP 400 错误,否则正常返回 HTTP 200.这种
                 不一致性,可以允许攻击者网页通过构造 CORS 请求来推断受害者网页是否存在 cookie 等信息.推断 cookie 的
                 存在能够被用来偷取受害者用户的隐私,如用户登录了医院网站,可以推断出用户可能存在某些病症.另外,
                 CORS 请求对 HTTP 内容也没有格式或者编码的限制,这也能造成安全风险.
                    CORS 机制的第 2 类安全风险,是其为网络交互引入了新的风险信任依赖.CORS 机制使得一个网站能够访
                 问跨源服务器的资源,导致跨源服务器与请求网站存在信任依赖.如此,当攻击者有机会攻破跨源服务器某个允
                 许访问的网站时,跨源服务器的资源将会被泄漏,这种情况在 HTTPS 服务器信任 HTTP 同网站网页时最为明显.
                    CORS 机制的第 3 类安全风险,是其配置通常不被开发人员很好地理解.由于它的无表达策略和它与其他
                 Web 机制的复杂的交互,CORS 协议配置出现了各种各样的错误.开发人员可能按照前缀、后缀或正则等匹配方
                 式来确定允许访问服务器资源的源,这种匹配方式可能存在漏洞,使得攻击者可以构造满足匹配的网址域名来
                 恶意偷取跨源服务器的资源.

                 4.3   方案对比与讨论
                    无服务器辅助的两类通信机制分别基于 document.domain 与 postMessageAPI,我们对这两种机制进行总结
                 分析,包括通信范围、攻击后果、发起攻击的影响范围评估以及其在目前网站中的使用率(见表 7).
                             Table 7    Comparison on cross-domain or cross-origin communication mechanisms
                                                 without server’s intervention
                                          表 7   无服务器辅助的跨域/跨源通信机制对比
                                                                                             在目前网站
                     通信机制         通信范围                安全威胁                   影响范围                    *
                                                                                             中的使用率
                              同一父域名下的兄弟       利用资源访问上存在不一致性,            Alexa top 100k 网站中,
                     document.   域名、或同一网站的        攻击者可访问受害者              1.87%的网站访问了           7.4%
                      domain                                   [13]
                                祖先与子孙域名          源范围内的任意资源                不一致授权的资源
                                                攻击者可以将接收方 frame
                                               导航为自身 frame 以偷取消息               −
                                                内容(目前机制已修复)    [59]
                                                                      Alexa top 10k 网站中,2245 个
                                                依赖于消息接收方的处理          网站(2.25%)注册了消息监听器,
                                                 逻辑,可以造成脚本注入
                    postMessage    任意源                         [14]     1845 个网站(1.85%)存在      49.5%
                                                 或 cookie 重写等后果
                                                                           被攻击的风险
                                                                      Alexa top 5k 网站中,1440 个
                                                   第三方脚本提供商          网站(28.8%)注册了消息监听器,
                                                  能监听网页消息内容             544 个网站(10.88%)的
                                                  以偷取隐私数据    [93]
                                                                        网站存在被攻击的风险
                    *数据来自于 Chrome 信息统计网站(https://chromestatus.com/metrics/feature/popularity),数据采集时间为 2020 年 3 月 24 日
                    其中,document.domain 局限于同一网站内的资源共享,而且共享成功的两个 frame 具有任意资源访问权限.
                 尽管有研究者们提出了基于 document.domain 机制的安全的跨源通信通道                 [96] ,但是 Web 应用仍越来越倾向于使
                 用 postMessageAPI.然而,postMessage API 的使用范例使得 Web 应用存在数据注入攻击与隐私泄漏的问题,以至
                 于 1.85%至 10.88%的使用 postMessage 机制通信的网站存在被攻击的风险             [14,93] .现有解决方案的思路在于对网
                 页代码进行重写以建立正常行为模型,或阻止其他处理函数的调用.前者存在误报与影响正常跨源通信的风险,
                 而后者由于处理函数具备与宿主 frame 相同权限而存在绕过网页重写防御机制的缺陷.研究者们需要在这一方
                 面进行更进一步的研究,以提出更合理、完善的解决方案.
                    在服务器辅助的跨源通信机制上,CORS 已经被引入至 HTML5 标准中,而 JSON-P 是开发者对于跨源需求
                 所提出的方案,因此其没有统一的规范来实施以解决面临的安全问题.此外,基于 JSON-P 实现的跨域机制还面
                 临着信任问题.因为 JSON-P 资源是作为 JavaScript 立即执行的,引入该资源脚本的网页不能对 JSON-P 资源执
   203   204   205   206   207   208   209   210   211   212   213