编译:360代码卫士团队
PortSmash(CVE-2018-5407)漏洞 近年侧信道攻击频发
研究人员在英特尔 CPU 中发现了一个新的侧信道漏洞 PortSmash,利用定时攻击从在和启用 SMT/超线程功能的同样的 CPU 内核中运行的其它进程中窃取信息。研究人员利用这种攻击能够从在同样内核中运行的 OpenSSL线程中窃取解密私钥。
这个漏洞被称为 PortSmash (CVE-2018-5407),和去年出现的危险的侧信道漏洞Meltdown和 Specture、TLBleed 以及 Foreshadow 同样严重。
这个漏洞是由芬兰坦佩雷理工大学以及古巴哈瓦那科技大学 (Universidad Tecnologica de la Habana CUJAE) 的研究人员发现的。这个新的侧信道漏洞存在与英特尔的超线程技术即英特尔对同步多线程 (SMT) 的实现中。
同步多线程是一种性能功能,它将处理器的每个物理内核分割成两个虚拟内核即线程,允许每个内核同时运行两个指令流。由于 SMT 在两个位于同一个物理内核中的独立进程中运行两个线程以提升性能,因此其中一个进程就很可能看到另外一个进程正在运行的大量内容。
侧信道定时攻击是指,攻击者分析某个进程执行某些特定指令的速度有多快,之后利用这一信息找出哪些信息被用作输入。
如此,攻击者就能和一个位于同样 CPU 内核上的精选的受害者进程一起运行恶意的PortSmash 进程,从而导致 PortSmash 代码通过衡量每次操作耗费的精确时间来嗅探另外一个进程所执行的操作。
窃取 OpenSSL 解密密钥
研究人员在 GitHub 上发布 PoC,测试了 PortSmash 是否适用于 OpenSSL(1.1.0h 及更早版本)密码库,结果显示能够通过运行在和 OpenSSL 线程(受害者)同样物理内核上的恶意进程(利用)窃取解密私钥。
虽然目前 PortSmash 攻击已被证实能在英特尔 Kaby Lake 和Skylake 处理器上起作用,但研究人员表示“强烈怀疑”攻击也适用于其它 SMT 基础架构上,包括 AMD 的基础架构,只需对代码做出微调即可。
今年8月份,TLBleed 和 ForeShadow 攻击被披露后,OpenBSD 兼 OpenSSH 项目牵头人 Theo de Raadt 就建议用户在所有的英特尔 BIOS 中禁用 SMT/超线程。
Theo 表示,“SMT 从根本上崩溃了,因为它在两个 CPU 实例之间共享资源,而这些被共享的资源缺乏安全差异因子。”
他还指出,“之后将披露更多的硬件 bug 和零部件。从 SMT 和英特尔 CPU 上的推断性执行的交互来看,我认为 SMT 将会使未来的多数问题恶化。”
如何保护系统免受 PortSmash 攻击
上个月月初,研究人员将这个新的侧信道漏洞告知英特尔安全团队,但英特尔在11月1日前仍未能推出安全补丁,因此研究员公开该漏洞以及 PoC。
安全研究员承诺将在几天后发布详细的 PortSmash 攻击论文《端口争夺的乐趣和利益 (Port Contention for Fun and Profit)》。
修复 PortSmash 漏洞的简单方案是禁用 CPU 芯片 BIOS 中的 SMT/超线程功能,然后等待安全补丁的发布。OpenSSL 用户可更新至 OpenSSL 1.1.1 (或1.1.0i 版本以上)。
今年6月份,OpenBSD 项目就禁用了英特尔的超线程功能以阻止用户遭此前披露的 Spectre级别的攻击以及未来的定时攻击。
AMD 公司正在调查 PortSmash 侧信道漏洞报告以获悉任何潜在的 AMD 产品受影响情况。