超线程已经玩完?
2019-06-24 19:14:03 阿炯

软件开发商将安全放在性能的前面,停用超线程(SMT)技术。

就在今天(2019年5月)英特尔谨慎地披露其数百万个处理器中发现了一系列安全漏洞后,谷歌已关闭 Chrome OS 中的超线程机制,以全面保护用户。与此同时,苹果、微软、IBM 的 Red Hat、QubesOS 和 Xen 纷纷建议客户:可能应采取类似措施。

这一系列漏洞名为微架构数据采样(MDS),这里是英特尔的官方公告,以及应对数据泄露漏洞的必要的微代码更新和受影响产品列表。安装这些修复程序并禁用英特尔的超线程功能是堵住漏洞的肯定能奏效的方法,不过性能可能因此受影响。

背景介绍


超线程是英特尔实施的同步多线程(SMT),这种技术用于将一个物理处理器核心分成两个虚拟核心(名为硬件线程)。它应该可以提升性能,因为允许两个软件线程同时通过每个物理核心来运行,并根据需要共享硅片上的可用资源。这意味着一个物理核心就可以同时处理同一个应用程序中或两个独立应用程序中的两个线程,从而提升吞吐量。一些工作负载得益于此,而一些工作负载受到阻碍或毫无成效。实际情况可能因环境而异。

超线程技术(Hyper-Threading Technology,HTT)是一种由英特尔公司开发的硬件技术。它通过利用特殊的硬件指令,将单个物理处理器模拟成两个逻辑内核,从而使单个处理器能够同时执行两个线程。具体来说,超线程技术通过将CPU的寄存器构成两个逻辑处理器,共享处理器的物理执行单元,并行完成加、乘、负载等操作。这样可以提高运行性能,因为应用程序可以同时利用芯片的不同部分。超线程技术的出现是为了充分利用处理器的执行单元,提高处理器的应用效率。该技术的优点在于提高了处理器的并行计算能力,可以同时执行多个线程,从而加快任务的完成速度。它可以在不增加物理处理器的情况下提升系统的性能。然而,超线程技术的实际效果取决于应用程序的特性和系统的配置。在某些情况下,超线程技术可能会带来性能的提升,但在其他情况下可能会对性能产生负面影响。因此,在使用超线程技术时需要根据具体的应用场景进行评估和配置。

然而,它确实带来的一个问题是这个风险:MDS 等侧通道监视技术可能会破坏硬件线程隔离,访问本该看不到的敏感数据。换句话说,一个线程可能窥视共享同一个物理 CPU 核心的另一个线程的内存访问,并有可能获取密码、密钥及其他秘密信息。实际上今天披露的芯片漏洞就涉及一系列设计失误:高危系统上的恶意软件或恶意用户可以钻 ZombieLoad(CVE-2018-12130)的空子,可能窃取浏览器历史记录、网站内容、用户密钥、密码和系统级秘密信息(比如来自内存其他部分的磁盘加密密钥)。我们获悉,它可以攻陷 CPU 保护环和进程边界,并针对云和本地虚拟机以及可信执行环境。概念证明漏洞代码可用来供你自己试一下。

还有 RIDL 和 Fallout(CVE-2018-12126、CVE-2018-12127 和 CVE-2019-11091),可以被用来从内存中窃取机密信息。

应对英特尔芯片中的这些安全疏忽将需要安装微代码更新,以及利用这些更新的操作系统和虚拟机管理程序补丁,因此咨询一下操作系统开发商(需要的话还要咨询系统制造商),问问有无新软件,尽快安装。这些修复程序可能会导致性能下降,具体取决于你运行的程序类型。

可以选择关闭超线程以完全消除威胁,不过可能需要在打开和关闭该功能的情况下测试使用的应用程序,斟酌一下是否值得为之降低性能。

谷歌

谷歌表示,由于担心安全,它在 Chrome OS 74 中默认禁用了超线程,并特别指出 Chrome OS 75 会添加额外的应对措施。

谷歌的工作人员在漏洞通知中称:“决定禁用或启用超线程实际上就是权衡安全与性能。在禁用超线程的情况下,英特尔 CPU 可能出现性能下降的情况,具体取决于工作负载。但在启用超线程的情况下,用户可以执行钻 MDS 的空子以读取敏感内存内容的代码,比如只要访问网站或运行安卓应用程序。”

谷歌在此进一步详细介绍了如何从客户端应用程序到云服务全面处理错误。

BSD 社区

举例说,去年 OpenBSD 社区在 OpenBSD 6.4 中禁用超线程后得出了这个结论。针对过去表明超线程是风险的英特尔处理器漏洞(TLBleed 和 L1TF),OpenBSD 的领导者 Theo de Raadt 声称,超线程基本上坏掉了,因为它在两个 CPU 实例之间共享资源而不保证安全隔离。

当时他在邮件列表中说:“在 BIOS 中禁用你的所有英特尔系统上的超线程。”

苹果

苹果发布了 macOS Mojave 10.14.5,以对付通过 JavaScript 和 Safari 实行的 MDS 攻击。但它表示全面的修复程序需要关闭超线程,这可能导致性能受到严重影响。

苹果在公告中警告:“全面应对需要使用 Terminal 应用程序来启用额外的 CPU 指令,并禁用超线程处理技术。这项功能适用于采用最新安全更新版的 macOS Mojave、High Sierra 和 Sierra,可能会使性能最多降低 40%,对高度多线程的密集计算任务来说影响最大。”

对于使用老式 Mac 的苹果用户来说颇为遗憾的是,英特尔还没有为 2010 年或更早版本的 Mac 机型提供微代码修复程序。

微软

微软在其 MDS 威胁指南中没有采取坚定的立场,不过特别指出:“为了得到全面保护,客户可能还需要禁用超线程。”这个 Windows 巨头已发布了操作系统更新,加上必要的微代码更新,共同应对英特尔的设计漏洞,请参阅上述链接。

Red Hat  

Red Hat 在公告中附有一个链接以禁用超线程,但没给出这样那样的建议。其超线程(SMT)安全页面特别指出:“最近发现了众多微处理器漏洞。某些问题需要禁用 SMT,才能更全面地应对这个问题。”这家企业 Linux 经销商在这里这里有更多的技术说明,解释了原因和影响。其他 Linux 发行版也应该会推出各自的修复程序。比如,这是 Ubuntu 和 Debian 的修复程序

“如果你使用针对容器优化的操作系统(COS)作为来宾操作系统,并且你在虚拟机中运行不受信任的多租户工作负载,谷歌云仅建议为 Compute Engine 用户禁用超线程。”谷歌为在 Kubernetes Engine 里面的多租户服务上运行不受信任的代码的人给出了类似建议。

Xen 开发的虚拟机管理程序由 AWS 及其他云提供商使用,它发布了一份公告,详细说明了超线程的风险,同时拒绝默认禁用该技术,因为这么做造成的破坏性太大。上述链接附有应对措施和修复程序。

其公告声称:“只有禁用超线程(如果在 BIOS 中可用且处于活跃状态),并且对 Xen 打补丁,才能完全阻止数据从 Xen 或其他来宾操作系统泄露出去。”

依赖 Xen 进行虚拟化的 Qubes 给出的说法大同小异。英特尔觉得其技术很好,让行业合作伙伴来自行决定要不要禁用超线程。

公司发言人在电子邮件中告诉 IT 外媒 The Register:“英特尔不建议禁用超线程。”

“单单禁用 SMT/HT 防范不了 MDS,这么做可能会影响工作负载的性能或资源利用率,影响有多大取决于具体工作负载,明白这一点很重要。”

“系统更新后,在某些情况下,可能需要考虑采取另外的措施。我们的软件合作伙伴会提供指导,帮助客户为对其需求而言至关重要的系统和工作负载做出正确的选择。”

相关阅读:

Intel CPU 千疮百孔:又有新的安全漏洞 PortSmash

Intel 扔掉了「X86 和冯·诺伊曼架构」,打造百亿亿次数据流引擎

Intel CPU 又爆漏洞:一把通向数据王国的钥匙

Intel CPU 根本性的安全风险:超线程

IT 行业的灾难:所有操作系统内核都可能被劫持或崩溃!因程序员误读了 Intel 的文档

Intel CPU 又曝 8 个大 BUG .... 这次更危险....

Intel CPU 曝大 BUG:迫使重新设计 Linux 和 Windows

本文转自:超线程已玩完 ChromeOS 砍掉 Intel CPU 的关键功能