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

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

                 有 0.27%的第三方脚本是通过 IP 地址引入的.这意味着攻击者可以采取以下方式来使得宿主 frame 运行其恶意
                 代码.
                    •   若宿主 frame 通过使用 localhost 来引入第三方脚本,并且用户机器为多用户时,恶意用户可以创建搭载
                        在本地的 Web 服务器来攻击;
                    •   若宿主 frame 通过使用私有 IP 地址来引入第三方脚本,位于内网内的攻击者可以创建对应的 Web 服
                        务器来发起攻击;
                    •   若宿主 frame 引入第三方脚本的域名或 IP 地址已经过期,攻击者可以注册该过期域名/IP 来发起攻击;
                    •   若 开 发 者在编 写第 三方脚 本域 名时出 现编 写错误 , 如将 googlesyndication.com 错误 书写 为
                        googlesyndicatio.com,攻击者可以注册该错误的域名来发起攻击.
                    (2)  第 2 类是利用第三方脚本的漏洞.
                    即攻击者可以直接攻击第三方脚本来达到攻击宿主 frame 的目标.Stock 等人                    [35] 于 2015 年对 FireFox 浏览
                 器进行修改,以增加网页的数据流检测.攻击者可以利用跨站脚本攻击来将恶意的数据转变为 JavaScript 代码来
                 在宿主 frame 中执行.根据其实验数据,在 Alexatop10k 网站中检测到 1 273 个导致跨站脚本攻击的漏洞,而其中
                 有 273 个漏洞来自于第三方脚本、165 个漏洞来自于第三方脚本与宿主 frame 自身代码的组合.Lauinger 等人                       [36]
                 于 2017 年对 Alexatop 75k 网站中所包含的 11 141 726 个第三方脚本进行了分析,通过爬取脆弱性数据库、
                 Github 评论与 releasenote 等数据来判断第三方脚本是否存在脆弱性.实验结果发现,37%的网站至少包含一个
                 已知漏洞版本的第三方脚本.此外,有些网站还使用了很早版本的第三方脚本,这些过时的版本与最新版本的平
                 均滞后时间为 1 177 天.新的版本可能包含了对之前版本漏洞的修复或者增加一些机制来增强脚本的安全性,
                 使用过时的第三方脚本为攻击者提供了额外的攻击向量来攻击宿主 frame.同时,由于浏览器同源策略赋予了第
                 三方脚本与宿主 frame 相同的访问权限,攻击者可以攻击这些脆弱的第三方脚本来访问宿主 frame 所在源中的
                 资源.
                    (3)  第 3 类是利用第三方脚本的间接引用特性.
                    即第三方脚本可以继续引入其他脚本,而宿主 frame 开发者通常并没有意识到这些外部脚本的存在.Kumar
                 等人 [37] 于 2017 年对 Alexatop 1000k 的网站进行了分析,他们将宿主 frame 明确引入的第三方脚本称之为显式
                 依赖(explicit trust),而由这些第三方脚本引入的除该第三方之外的源的脚本称为隐式依赖(implicittrust).实验结
                 果表明,9%的网站加载了隐式依赖的外部脚本,而 top 100k 的网站中有 13%运行了隐式依赖的外部脚本.Ikram
                    [8]
                 等人 除了分析 Alexatop 200k 网站中的隐式依赖脚本外,还更近一步地对这些隐式的第三方提供商进行分类.
                 借助于现有的 VirusTotal 工具并设定合适的阈值,Ikram 等人发现:1.2%的隐式第三方是可疑的,且 73%的网站从
                 这些可疑的隐式第三方中加载了资源.这些现有的实验数据意味着攻击者可以不用直接去攻击一个 frame 或者
                 其显式依赖,而是通过攻击一些隐式的第三方脚本提供商来完成攻击.
                    上述 3 类威胁场景对宿主 frame 所造成的攻击后果包括实现用户追踪、数据泄漏与篡改、阻止 HTTPS 部
                                                     [7]
                 署以及破坏宿主 frame 业务逻辑等.Zhou 等人 开发了 ScriptInspector,一个修改后的浏览器,用来拦截、记录与
                 检查第三方脚本对关键资源的访问.通过对 Alexatop 200 US 网站的实验,发现几乎所有的第三方脚本访问了浏
                 览器的基本属性,包括 navigator、screen 以及 DOM 中的根节点(document 与 body),第三方脚本可以利用这些属
                 性来实现浏览器指纹功能         [38−42] ,进而完成用户追踪而破坏用户隐私.Zhou 等人还发现:大部分的第三方脚本都
                 发送了网络请求,并且有些网络请求还发送给了其他源的服务器,这可能会造成数据泄漏.一些广告和社交第三
                 方脚本还存在对宿主 frame 的内容进行了修改与读取的情况,如 Zhou 等人的实验中发现,有脚本读取了用户购
                 物车信息;Kumar 等人    [37] 的实验发现,在前 100 万个只使用 HTTP 协议的网站中,有 55%的 HTTP 网站依赖于不
                 支持 HTTPS 访问的内容,由于浏览器不会执行通过 HTTP 协议加载到 HTTPSframe 中的内容,这些网站因而不
                 能迁移为 HTTPS 部署;Patra 等人     [43] 还发现,宿主 frame 自身的脚本与第三方脚本有可能存在冲突,由于宿主
                 frame 中的所有脚本具有同样的 JavaScript 作用域,第三方脚本可以声明在宿主 frame 中已经存在的全局变量.
                 当宿主 frame 之后调用该变量时,JavaScript 引擎将会使用最新加载的脚本所定义的变量,之前的变量将会被覆
   189   190   191   192   193   194   195   196   197   198   199