缺陷被彻底揭露三个月后崩溃与幽灵,我们似乎终于看到了隧道的尽头。几天前,微软宣布硬件补丁分发直接从 Microsoft 更新目录获取 Spectre,无论 PC 型号如何,只要配备 Intel 处理器即可。大大松了口气。用户将不再迷失在制造商支持页面的迷宫中,这是造成混乱的主要根源。
但事态真的解决了吗?无论如何,Meltdown 页面已经彻底转变,无论是在 Windows 上还是在 macOS 或 Linux 上。“ 这问题解决了。可以在操作系统级别反击该攻击。因此,只要系统是最新的,就不再有任何风险””,法国国家科学研究中心 (CNRS) 研究员、在 IRISA 从事微架构安全研究的 Clémentine Maurice 解释道。
预测执行,处理器的致命弱点
在 Spectre 方面,情况就没那么简单了,因为问题深深地存在于处理器的功能中,处于预测执行的层面上。当程序运行并根据逻辑条件集成执行循环或线程时,当前的处理器不会等待它真正执行:它们会预测其结果并执行在它们看来最有可能的指令,这节省了时间很多时间。
但幽灵攻击表明,影响这种预期机制是可能的。攻击者可以欺骗处理器执行不应执行的分支。然后,它可以通过辅助通道间接猜测某些信息,特别是通过测量内存访问时间。幽灵攻击有两种变体,边界检查绕过(CVE-2017-5753) 和分支目标注入(CVE-2017-5715),具体取决于目标线程类型。以下是去年一月提供的两个代码示例格拉茨技术大学的研究人员,他们是发现 Meltdown 和 Spectre 的团队之一。
完全消除这种预期机制是不可能的。“那么性能将会灾难性地下降””,克莱门汀·莫里斯强调道。例如,开发人员创建了一个游戏《毁灭战士》的版本没有任何预测执行。我们最终不是每秒 30 帧,而是每七小时一帧。因此,我们必须找到一种更微妙的方法。
迄今为止已经提出了几种解决方案。在软件方面,可以在代码中放置某种障碍,从而在某些关键时刻阻止预测。在某些情况下,可以使用简单指令(“LFENCE”)。在其他情况下,我们可以添加“retpolines”,这是 Google 创建的一种有点奇怪的结构,它通过用无限循环捕获分支预测来中和分支预测。
这些障碍通过代码编译器集成,有时甚至可以自动放置它们。“问题在于编译器必须确切地知道将它们放在哪里,这并不容易。实施的规则不好,可以规避 »格拉茨技术大学的博士生迈克尔·施瓦茨 (Michael Schwarz) 解释道,他是揭示 Meltdown 和 Spectre 的研究团队之一的成员。开发人员还可以手动添加这些障碍,但这假设他完全了解 Spectre 缺陷对其代码的影响。这并不是很明显。
英特尔微码还有很长的时间才能到达
就英特尔而言,几个月来一直致力于更新处理器微代码的补丁。有几种技术正在发挥作用:间接分支限制推测 (IBRS)、间接分支预测器屏障 (IBPB)、单线程间接分支预测器 (STIBP)。“这个想法是为了确保处理器忘记它所学到的东西并且不再被攻击者困住”,指定迈克尔·施瓦茨。问题是这些技术仅适用于分支目标注入变体。
此外,仅第六代英特尔处理器的微代码(Skylake)直到最近才可用。 Haswell 和 Broadwell 一代的微代码造成故障并在最后一刻被撤回。好消息是英特尔已经取得了良好的进展。英特尔老板 Brian Krzanich 刚刚宣布,所有最新一代处理器系列(过去 5 年)现在都可以受益于可靠的软件保护。它还确保硬件级保护将应用于新一代处理器、Meltdown 和 Spectre 变体之一。另一个(边界检查绕过)目前必须继续通过软件手段来缓解。
其他灰色地带仍然存在。“所有软件补丁都旨在抵御从用户空间到内核空间的攻击。用户空间之间的攻击情况尚未解决 »”,迈克尔·施瓦茨继续说道。对于来自浏览器的远程攻击也仍然存在疑虑。为了防止攻击者实施 Spectre 攻击,发布商降低了 Javascript API 中时间测量函数的精度。“问题是手工制作时间测量功能并不是很难”,研究人员强调。
现在,我们必须忍受它
简而言之,尽管已经完成了大量工作,但幽灵暂时只是不完全密封。而且这个缺陷的潜力似乎还没有被充分开发出来。自从它被揭露以来,另外两个变种也被揭露了,至尊幽灵等新加坡佩克特。迈克尔·施瓦茨 (Michael Schwarz) 表示,他们并没有对迄今为止开发的修复提出质疑,这令人放心。但我们认为这个领域仍然非常不稳定,问题仍然存在。“短期内,我们必须学会忍受这一缺陷,并确保降低遭受攻击的可能性。不过,我希望处理器领域的研究能够继续下去,有一天这个缺陷将被完全消除。,埃斯蒂姆·迈克尔·施瓦茨。
幸运的是,Spectre 攻击实施起来并不简单。与 Meltdown 不同,它们依赖于计算机的硬件和软件配置,这排除了任何大规模的利用。只有有才华的黑客才能利用它进行有针对性的攻击。但我们决不能认为这是不可能的。“一个计算机科学专业的本科生有能力做到这一点”,苏琳·迈克尔·施瓦茨。