导读 OpenBSD已经禁用了英特尔的超线程技术,理由是安全问题 - 这看起来像是Spectre式的问题。OpenBSD维护者Mark Kettenis写道:“SMT(同时多线程)实现通常在线程之间共享TLB和L1缓存。

“这可能会让缓存时攻击变得更加容易,我们强烈怀疑这会让多个Spectre级别的漏洞被利用。”

因此,OpenBSD决定禁用英特尔CPU超线程技术,采用“全新的hw.smt sysctl”技术,以避免数据可能通过类似于Spectre的处理器缺陷从应用程序泄露到其他软件。

“现在这只能在运行OpenBSD / amd64的Intel CPU上运行,”Kettenis写道。“但我们计划将此功能扩展到其他厂商和其他硬件架构的CPU。”

疯狂的域

Kettenis的帖子中的决定没有太多的解释信息,除了以下意见:“我们确实不应该在同一核心的不同处理器线程上运行不同的安全域。”

然而,OpenBSD的这篇文章中有一个进一步的提示:Philip Guenther,他做了一项改变,“在从用户空间进入内核时清除GPRs,以便用户控制的值不能在内核参与随机性的执行,但可能会引起一些对用户可见的效果影响(缓存等)。“

该提交伴随着禁用英特尔超线程的请求。

我们还发现在这个Seclists消息中提到了OpenBSD的决定,并暗示将在6月27日发布相关信息。8月份在Black Hat举行的这次演讲中,承诺会揭示非法用户如何通过超线程和TLB数据从应用程序内存中提取遭到泄露的加密密钥的方法。

具体来说,本次演讲由Ben Gras撰写,将介绍一种名为TLBleed的技术,该技术可以利用超线程技术扫描敏感数据:

只需观察与其共同驻留的超线程上的签名操作,我们的TLBleed漏洞就可以利用libgcrypt(在GPG中使用)成功泄漏256位EdDSA密钥,成功率为98%,仅需17秒的分析时间。

我们已经要求Kettenis提供更多信息,英特尔也会发表评论,但在撰写本文时尚未联系。

性能

Kettenis的帖子建议禁用超线程并不是什么大问题,因为“SMT不一定会对性能产生积极影响; 它高度依赖于CPU的工作量。如果你的CPU拥有两个以上的内核,很有可能会降低大多数工作负载。“

他没有错:除非代码是用超线程编写的,否则性能优势并不是很大,并且没有很多代码会专门利用该功能。超线程技术通过允许一个CPU内核一次运行多个线程而不是每个内核一次只在同一时间运行一个线程。

但是,英特尔将超线程作为一种独特的优点进行销售:其CPU规格表总是提及核心和线程数。

原文来自:http://www.qianjia.com/html/2018-08/27_303423.html

本文地址:https://www.linuxprobe.com/openbsd-intel.html编辑:唐资富,审核员:逄增宝