通过推测执行和类型混淆绕过谷歌Chrome严格站点隔离。
2018年发现的Spectre漏洞引发了计算机行业的大地震,Spectre攻击影响处理器厂商、操作系统厂商以及编程语言开发者等。由于web浏览器可能会访问敏感信息和执行不可信的代码,因此被认为是Spectre攻击的主要目标。为保护浏览器用户免受攻击,Google Chrome浏览器采用了严格的站点隔离策略(Strict Site Isolation)通过确保来自不同域名的内容无法在同一地址空间共享,以此来预防信息泄露。
Spook.js
研究人员提出的Spook.js,是一种针对Chrome web浏览器的基于JavaScript的Spectre攻击,可以从被攻击页面的完整地址空间中读取内容。研究人员进一步分析了Chrome的严格站点隔离实现,表明Chrome采取的站点隔离策略不足以保护用户应对基于浏览器的推测执行攻击,Spook.js 可以从其他web页面中读取敏感信息。
Chrome的严格站点隔离策略实现基于eTLD+1域名合并,允许攻击者控制的页面从其他子域名的页面中提取敏感信息。研究人员使用类型混淆攻击来让Chrome 32位沙箱机制,通过类型混淆攻击可以暂时强制Chrome JS执行引擎操作错误类型的对象。通过该方法研究人员将多个32位值合并到一个64位的指针,然后读取进程的完整地址空间。
受影响的web浏览器
研究人员在Chromium上对Spook.js进行了测试,发现大多数基于Chromium的浏览器都受到Spook.js或其变种的影响。其中包括微软Edge浏览器最新版本和隐私浏览器Brave。
受影响的产品
Intel处理器和M1芯片的苹果设备都有很高概率受到该漏洞的影响。此外,研究人员发现Spook.js攻击还影响AMD芯片设备,但针对AMD的攻击只部分被证明。
攻击影响
在特定情况下,在Chrome浏览器tab页运行的恶意JS代码可以读取其他Chrome tab页面的内容,其中可能包含密码、银行信息等敏感信息。此外,恶意扩展还可能从其他扩展中读取信息,比如保存在其他扩展中的敏感信息。
窃取的信息
研究人员测试后发现可以读取以下信息:
用户打开的tab页列表;
网站上展示的手机号、地址、银行账户信息;
凭证管理器自动填充的用户名、密码和信用卡号等;
特定情况下,用户在Google Photos中打开查看的图片。
Spook.js 攻击场景
攻击Tumblr
研究人员在Tumblr blog上测试了Spook.js,通过Chrome内置的凭证管理器来攻击Tumblr登录页面自动填充的密码。研究人员测试发现Spook.js可以恢复填充的密码。
PoC视频参见:https://www.youtube-nocookie.com/embed/bP9Hquj5PH4
攻击LastPass
研究人员将Spook.js打包为Chrome扩展,并测试发现,在特定情况下,可以从LastPass密码管理器中窃取用户名和密码。
PoC视频参见:https://www.youtube-nocookie.com/embed/yz_s4k1zGwA
PoC代码参见:https://github.com/spookjs/spookjs-poc
本文翻译自:https://www.spookjs.com/files/spook-js.pdf及https://www.spookjs.com/如若转载,请注明原文地址