• 因特尔的超线程(SMT)技术要完?
  • 发布于 2个月前
  • 320 热度
    0 评论
  • 刘棕刃
  • 0 粉丝 20 篇博客
  •   
软件开发商将安全放在性能的前面,停用超线程(SMT)技术。

就在今天英特尔谨慎地披露其数百万个处理器中发现了一系列安全漏洞后,谷歌已关闭Chrome OS中的超线程机制,以全面保护用户。

与此同时,苹果、微软、IBM的Red Hat、QubesOS和Xen纷纷建议客户:可能应采取类似措施。

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

背景介绍

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

然而,它确实带来的一个问题是这个风险:MDS等侧通道监视技术可能会破坏硬件线程隔离,访问本该看不到的敏感数据。换句话说,一个线程可能窥视共享同一个物理CPU核心的另一个线程的内存访问,并有可能获取密码、密钥及其他秘密信息。

实际上,今天披露的芯片漏洞就涉及一系列设计失误:高危系统上的恶意软件或恶意用户可以钻ZombieLoad(CVE-2018-12130)的空子,可能窃取浏览器历史记录、网站内容、用户密钥、密码和系统级秘密信息(比如来自内存其他部分的磁盘加密密钥)。我们获悉,它可以攻陷CPU保护环和进程边界,并针对云和本地虚拟机以及可信执行环境。概念证明漏洞代码(https://github.com/IAIK/ZombieLoad)可用来供你自己试一下。

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

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

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

谷歌

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

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

谷歌在此(https://support.google.com/faqs/answer/9330250)进一步详细介绍了如何从客户端应用程序到云服务全面处理错误。

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经销商在这里(https://access.redhat.com/solutions/rhel-smt)和这里(https://www.redhat.com/en/blog/understanding-mds-vulnerability-what-it-why-it-works-and-how-mitigate-it?sc_cid=701f2000000tyBjAAI)有更多的技术说明,解释了原因和影响。其他Linux发行版也应该会推出各自的修复程序。比如,这是Ubuntu和Debian的修复程序:https://blog.ubuntu.com/2019/05/14/ubuntu-updates-to-mitigate-new-microarchitectural-data-sampling-mds-vulnerabilities和https://security-tracker.debian.org/tracker/DSA-4444-1。

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

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

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

依赖Xen进行虚拟化的Qubes给出的说法大同小异。

英特尔觉得其技术很好,让行业合作伙伴来自行决定要不要禁用超线程。

公司发言人在电子邮件中告诉IT外媒The Register:“英特尔不建议禁用超线程。”
“单单禁用SMT/HT防范不了MDS,这么做可能会影响工作负载的性能或资源利用率,影响有多大取决于具体工作负载,明白这一点很重要。”

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