研究人员设计了一种新的定时攻击方法,用来从运行在相同内核上启用了SMT/hyper-threading的不同进程窃取信息。在向共享核心发送指令时,通过仔细测量端口竞争延迟,研究人员可以从不同进程恢复私钥。受此影响的很可能不仅只有英特尔的 CPU。
芬兰坦佩雷理工大学(Tampere University of Technology)的教授 Billy Bob Brumley 是这项研究的作者之一,他与古巴哈瓦那技术大学(Universidad Tecnológica de la Habana, Habana, Cuba)的 Alejandro Cabrera Aldaya 等人一起解释说:
我们检测端口竞争来构造定时边信道,以从在相同物理核心上并行运行的进程中过滤信息。
借助这种方法,他们有可能从搭载 Skylake 或 Kaby Lake CPU 的 TLS 服务器上窃取 OpenSSL(<=1.1.0h)P-384 私钥。
为了理解端口竞争是什么,我们应该记住,现代处理器有多个端口,它们分配给不同的指令,这些指令在共享内核上等待各自执行完成。例如,一个处理器可以有 2 个端口来执行加载操作。这样处理器就能够调度两个指令同时进行加载。当端口耗尽时,进程不得不等待,从而引入可测量的延迟。
所有攻击的细节将在一篇尚未发表的文章中披露,文章将提交至IACR,题为”为乐趣和利益而争用端口”,但似乎有理由说,这种漏洞看起来几乎是一种有意为之的属性,尽管利用起来并不容易。然而,新奇的地方在于攻击的可复现性,正如 Brumley 所说:
拉取代码,按照指南操作,你就会看到我们在攻击中使用的信号。没有地址依赖,也不需要适配缓存分布等,直接就可以得到结果。
这可能会导致供应商们重新考虑使用 SMT 的可行性,尤其是在共享的云机器上。事实上,几个月前披露了一个名为TLBleed的密切相关的漏洞,它也利用了超线程技术。作为对此事件的回应,OpenBSD 项目引入了一种配置机制来禁用超线程,并且考虑到存在严重风险,默认情况下超线程是被禁用的。
一份相关的记录写道,Brumley 等人描述的攻击有效地利用了 OpenSSL 1.1.0h 中的一个弱点,该弱点将秘密做了一个分支,因此可以通过测量竞争次数来推断私钥。OpenSSL 已经为相关代码打上补丁,并防御了这种特定的攻击。
英特尔在向几家媒体发表的声明中表示,这个问题并不依赖于推测执行,因此应被视为与Spectre、Meltdown或L1TF攻击无关。
查看英文原文: https://www.infoq.com/news/2018/11/portsmash-smt-side-attack
感谢冬雨对本文的审校。
评论