Spook.js,一种利用 Chrome 中的 Spectre 漏洞的新技术

一群研究人员 来自美国、澳大利亚和以色列的大学报告说, 描述了一种新的攻击技术 允许利用漏洞 Chromium 驱动的浏览器上的 Spectre 类。

代号为攻击 Spook.js,允许在执行 JavaScript 代码时绕过站点隔离机制 读取当前进程的整个地址空间的内容,即访问在其他选项卡中执行但在同一进程中处理的页面的数据。

由于 Chrome 在不同的进程中启动不同的站点,因此实际攻击仅限于允许不同用户托管其页面的服务。 Spook.js 的攻击方法使攻击者可以从一个页面中嵌入他的 JavaScript 代码成为可能, 确定是否存在同一站点的用户打开的其他页面 并提取机密信息 其中,例如,凭据或银行详细信息被 Web 表单中的自动完成系统替换。

该方法的另一个应用是对浏览器插件的攻击, 当安装了攻击者控制的插件时,它允许从其他插件中提取数据。

Spook.js 适用于任何基于 Chromium 引擎的浏览器, 包括 Google Chrome、Microsoft Edge 和 Brave。 研究人员还认为,该方法可以适用于 Firefox,但由于 Firefox 引擎与 Chrome 非常不同,因此创建此类漏洞的工作留待未来。

为了防止与通过浏览器推测执行指令相关的攻击,Chrome 中实现了地址空间分段:沙箱隔离允许 JavaScript 仅使用 32 位指针,并在不重叠的 4GB 堆栈中共享控制器的内存。

为了组织对进程整个地址空间的访问并避免 32 位限制,研究人员使用了类型混淆技术,该技术允许 JavaScript 引擎处理具有错误类型的对象,从而有可能形成 64 位基于两个 32 位值的组合的代码。

攻击的本质是通过在 JavaScript 引擎中处理特制的恶意对象,创造条件,导致对访问数组的指令进行推测性执行。 对象的选择方式是将攻击者控制的字段放置在使用 64 位指针的区域中。

由于恶意对象的类型与正在处理的数组类型不对应,因此在正常情况下,Chrome 中用于访问数组的代码的反优化机制会阻止此类操作。 为了解决这个问题,类型混淆攻击代码被放置在一个“if”条件块中,它在正常情况下不会触发,而是在处理器错误预测更多分支时以推测模式运行。

因此,处理器推测性地访问生成的 64 位指针并在确定预测失败后恢复状态,但执行轨迹设置在共享缓存中,可以使用通过第三次确定缓存内容的方法进行恢复。方渠道,分析缓存和非缓存数据的访问时间变化。

为了在 JavaScript 中可用计时器精度不足的情况下分析缓存的内容,使用谷歌提出的一种方法,该方法欺骗处理器中使用的 Tree-PLRU 缓存数据驱逐策略,并允许通过增加循环次数,显着增加缓存中存在和不存在值的时间差。

研究人员发布了适用于 Chrome 89 e 的原型漏洞利用n 系统采用 Intel i7-6700K 和 i7-7600U。 该漏洞是使用谷歌之前发布的 JavaScript 代码原型创建的,用于执行 Spectre 攻击。

最后研究人员提到 设法为基于 Intel 和 Apple M1 处理器的系统准备工作漏洞,它们有机会以每秒 500 字节的速度和 96% 的准确度组织内存读取。 该方法应该适用于 AMD 处理器,但无法准备功能齐全的漏洞利用程序。

数据来源: https://www.spookjs.com


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。