近日,Google 安全团队公布了其关于在浏览器的 JavaScript 引擎中利用 Spectre 漏洞的概念验证代码(PoC),并于 leaky.page 网站上公开了一个交互式攻击演示。
Spectre 漏洞是一个存在于分支预测实现中的硬件缺陷及安全漏洞,含有预测执行功能的现代微处理器均受其影响,漏洞原理是利用基于时间的旁路攻击,允许恶意进程获得其他程序在映射内存中的数据内容。基于其攻击行为类型,赋予了两个通用漏洞披露 ID,分别是 CVE-2017-5753(bounds check bypass,边界检查绕过)和 CVE-2017-5715(branch target injection,分支目标注入),于 2018 年 1 月随同另一个也基于推测运行机制的、属于重量级信息安全漏洞的硬件缺陷 “Meltdown”(熔毁)一同公布。
根据 Google 的 Leaky.Page 演示,当在 Intel Skylake CPU(i7-6500U)上运行 Chrome 88 时,它有可能以 1kB/s 的速度泄露数据。该概念验证代码是针对 Intel Skylake CPU 的,而对 JavaScript 稍作修改后,它也能适用于其他处理器和浏览器。谷歌也成功地在苹果 M1 ARM CPU 上进行了 leaky.page 上的演示,而没有进行任何重大修改。此外,Google 还开发了两种不同类型的 PoC,一个使用 performance.now() 5μs 精度的定时器,能够以 8kB/s 的速度泄漏数据但稳定性较差,一个使用精度为 1ms 或更差的定时器,能以 60B/s的速度泄漏数据。
本次发布的 PoC 主要包括两部分,一个是 Spectre 工具,用来触发攻击者控制的瞬时执行的代码,一个是 side-channel,用来观察瞬时执行的代码的副作用的方法。对于 Spectre 工具,Chrome 的 V8 团队实现了多个变种。然而,该团队发现,有些 Spectre 漏洞可以在软件层面缓解,对于变种 4,则完全无法在软件层面上缓解。关于该 PoC 的详细内容,可以查阅 Google 安全博客。