英特尔固件/微代码更新使处理器对 Spectre 和 Meltdown 都“免疫”?

信息安全 硬件 崩溃 幽灵 中央处理器 英特尔
2021-08-30 23:30:38

最近英特尔在新闻稿中声明了以下内容(强调):

加利福尼亚州圣克拉拉,2018 年 1 月 4 日 —英特尔已经开发并正在快速发布所有类型的基于英特尔的计算机系统(包括个人计算机和服务器)的更新,使这些系统免受这两种攻击(称为“幽灵” ”和“崩溃”)由谷歌零项目报告。英特尔及其合作伙伴在以软件补丁和固件更新的形式部署更新方面取得了重大进展。

英特尔已经为过去五年内推出的大多数处理器产品发布了更新。到下周末,英特尔预计将为过去五年内推出的 90% 以上的处理器产品发布更新。此外,许多操作系统厂商、公有云服务商、设备制造商等都表示已经更新了产品和服务。

最近的另一份新闻稿重申了这一点(强调补充):

12 月初,我们开始向 OEM 合作伙伴分发英特尔固件更新。对于过去五年推出的英特尔 CPU,我们预计将在一周内发布超过 90% 的更新,其余的将在 1 月底之前发布。此后,我们将继续发布其他产品的更新。我们对这一进展感到高兴,但也认识到要支持我们的客户还有很多工作要做。

似乎他们声称他们已经为他们的处理器开发了固件更新,以某种方式阻止了 Meltdown 和 Spectre 攻击,并且它们正在通过不同的供应商分发。

然而,我发现这种说法含糊不清,没有说服力。

是否有英特尔 CPU 固件/微码更新部分或完全防止 Meltdown 和 Spectre?如果是这样,他们如何实现这一目标以及它如何影响性能?


更多信息:

经过进一步研究,“固件”更新似乎是指微码更新。不过,仍然没有关于此更新完成什么的真正细节。

来自Debian 错误报告日志:intel-microcode:meldown/spectre 即将更新

有传言称,英特尔将发布微码更新(部分?)以减轻崩溃和幽灵的一些影响。


英特尔已经发布了几个更新,但并非所有更新都是 AFAIK。

在部署内核更改以激活新的 MSR 之前,这些微代码更新几乎没有影响。但它们确实与条件跳转和 LFENCE 混为一谈。

无论如何,将部分非官方更新上传到不稳定以关闭错误。仍然缺少几个处理器。我期待英特尔很快发布正式版本,希望能对所有内容进行更新。

每个人都应该寻找固件更新,通常好的供应商已经发布了它们,或者将在下周末之前发布它们。

1个回答

英特尔将为所有不超过 5 年的处理器发布补丁。这些补丁中的大部分将在下周提供,其余的将在 2018 年 1 月结束之前提供。

他们还发布了这个pdf,这应该回答有关这些补丁的所有进一步问题。


TL;博士:

缓解:

边界检查绕过(= Spectre):软件修改
分支目标注入(= Spectre):软件修改和微代码更新
流氓数据缓存加载(= Meltdown):操作系统现在必须打补丁,但较新的处理器将“有硬件支持”用于缓解。


以下是白皮书的简短引用。我强调了与您的问题有关的部分:

边界检查绕过缓解

对于边界检查绕过方法,英特尔的缓解策略侧重于软件修改。英特尔建议的软件缓解措施是在适当的地方插入障碍以阻止投机行为。为此,特别推荐使用 LFENCE 指令。序列化指令以及 LFENCE 指令将阻止更年轻的指令执行,即使是推测性的,在旧指令退役之前,但 LFENCE 是比其他序列化指令更好的性能解决方案。在边界检查之后插入的 LFENCE 指令将阻止较年轻的操作在边界检查退出之前执行。请注意,必须谨慎地插入 LFENCE;如果使用过于宽松,性能可能会受到严重影响。

例如,英特尔对 Linux 内核的分析只发现了少数需要 LFENCE 插入的地方,因此对性能的影响很小。对 Windows/MacOS 无评论

分支目标注入缓解

对于分支目标注入方法,已经开发了两种缓解技术。这允许软件生态系统选择适合其安全性、性能和兼容性目标的方法。第一种技术在处理器和系统软件之间引入了一个新接口。该接口提供了允许系统软件阻止攻击者控制受害者的间接分支预测的机制,例如在适当的时间刷新间接分支预测器以减轻此类攻击。[...]这种缓解策略需要更新系统软件以及加载微码更新,以支持许多现有处理器的新接口。

第二种技术引入了“return trampoline”的概念,也称为“retpoline”。本质上,软件用代码序列替换间接近跳转和调用指令,其中包括将相关分支的目标推入堆栈,然后执行返回(RET)指令以跳转到该位置,因为返回指令通常可以使用保护这种方法。对于许多当前英特尔处理器上的某些工作负载,这种技术可能比第一种技术表现得更好。[...] 对于 Broadwell 一代及更高版本的英特尔® 酷睿™ 处理器,此 retpoline 缓解策略还需要应用微码更新才能使缓解完全有效。

恶意数据缓存负载缓解

对于流氓数据缓存加载方法,操作系统软件可以确保在执行用户代码时不映射特权页面,以防止用户模式访问特权页面。

这种基本的双页表方法之前曾在“KASLR 已死:KASLR1 万岁”论文中提出,作为对内核地址空间布局随机化 (KASLR) 侧通道攻击的缓解措施,被称为 KAISER。这种方法还可以减轻恶意数据缓存负载。英特尔已与多家操作系统供应商合作,在其操作系统中启用双页表方法。实现这种双页表缓解的操作系统可能希望利用支持它的处理器上的进程上下文标识符 (PCID) 功能。PCID 可以大大降低在用户/管理员模式转换期间频繁重新加载 CR3 导致的 TLB 刷新的性能成本。

未来的英特尔处理器还将提供硬件支持以减轻流氓数据缓存负载。


英特尔的首席执行官 Brian Krzanich 在 CES 2018 的主题演讲中显然也谈到了其中的一些内容。

https://youtu.be/RlJ9zB74G_U?t=3545


作为最终用户,这对我意味着什么?

  1. 你的机器有英特尔处理器吗?

    1. 不?获取您的操作系统/虚拟机和浏览器的更新。寻找 AMD 或 ARM 的补丁。如果您也没有这些,请睁大眼睛,如果您的供应商出现在“也受影响”列表中。
    2. 是的!从官方来源获取补丁。还要更新您的操作系统。那你应该没事。可能这可以一步完成。一旦补丁可用,请立即执行此操作,明天可能会弹出一个新的 WannaCry。