新的SpookJS攻击绕过了Google Chrome的站点隔离保护

在现代处理器上演示的一种新发现的侧通道攻击可以被武器化,以成功克服Google Chrome和Chrome浏览器中的站点隔离保护,并以幽灵式推测执行攻击的方式泄漏敏感数据。
Dubbed "Spook.js" by academics from the University of Michigan, University of Adelaide, Georgia Institute of Technology, and Tel Aviv University, the technique is a JavaScript-based line of attack that specifically aims to get around barriers Google put in place to potentially prevent leakage by ensuring that content from different domains is not shared in the same address space after Spectre and Meltdown vulnerabilities came to light in January 2018.
研究人员说:“攻击者控制的网页可以知道用户当前浏览的同一网站的哪些其他网页,从这些网页中检索敏感信息,甚至在自动填充时恢复登录凭据(例如用户名和密码)。”,添加“如果用户安装恶意扩展,攻击者可以从Chrome扩展(如凭据管理器)检索数据。”
因此,可以提取存储在正在呈现的网站或Chrome扩展内存中的任何数据,包括网站上显示的个人身份信息,以及自动填写的用户名、密码和信用卡号码。
Spectre被命名为CVE-2017-5753和CVE-2017-5715,是指CPU中的一类硬件漏洞,它打破了不同应用程序之间的隔离,允许攻击者诱使程序访问与其内存空间相关的任意位置,滥用程序读取访问的内存内容,从而有可能获取敏感数据。
谷歌指出:“这些攻击利用大多数CPU的推测性执行功能来访问内存中不受代码限制的部分,然后利用定时攻击来发现存储在该内存中的值。”。“实际上,这意味着不可信代码可能能够读取其进程地址空间中的任何内存。”
2018年7月推出的Site Isolation(站点隔离)是谷歌的软件对策,旨在使攻击更难利用,其中包括降低计时器粒度。启用该功能后,Chrome浏览器版本67及更高版本将在各自的进程中加载每个网站,从而阻止进程之间以及站点之间的攻击。
然而,最新研究的研究人员发现,网站隔离保护措施不会将两个网站分开,从而有效地破坏了幽灵保护。斯布克。js利用这种设计怪癖,导致运行在英特尔、AMD和苹果M1处理器上的Chrome和基于Chrome的浏览器出现信息泄漏。
研究人员解释说:“因此,Chrome会将‘example.com’和‘example.net’分开,因为它们是不同的[顶级域名],还有‘example.com’和‘attacker.com’。”。“但是,'attacker.example.com'和'corporate.example.com'允许共享同一进程,[而且]这允许在'attacker.example.com'下托管的页面从'corporate.example.com'下的页面中提取信息。”
“Spook.js表明,为了保护用户免受基于浏览器的推测性执行攻击,这些对策是不够的,”研究人员补充道。这就是说,和其他幽灵变种一样,利用Spook。js很难实现,需要攻击者具备丰富的侧通道专业知识。
为了回应这些发现,2021年7月,Chrome安全团队扩展了站点隔离,以确保“扩展不能彼此共享进程”,并将其应用到“用户通过第三方提供商登录的站点”。从Chrome 92及更高版本开始,新设置被称为“严格扩展隔离”(Strict Extension Isolation)。
研究人员说:“网络开发人员可以立即将不受信任的、用户提供的JavaScript代码从网站的所有其他内容中分离出来,将所有用户提供的JavaScript代码托管在一个具有不同eTLD+1的域中。”。“通过这种方式,严格的站点隔离不会将攻击者提供的代码和潜在的敏感数据整合到同一个进程中,因为数据无法跨越进程边界,所以即使Spook.js也无法获取这些数据。”