Intel公布了一个新的漏洞,该漏洞影响了大部分酷睿处理器,使其成为类似于 Spectre 和 Meltdown 的旁路攻击的目标。该漏洞被称为 Lazy FP 状态还原(CVE-2018-3665),允许进程推断出属于其他进程的FPU/MMX/SSE/AVX 寄存器的内容。
x86 处理器的功能使得新的漏洞成为可能,它允许在上下文切换时懒惰地切换 FPU 。实际上,由于 FPU 寄存器数量通常要多得多,FPU 状态的快速保存和还原相对来说较为昂贵,所以操作系统可以选择使用 Lazy FP 状态还原。这意味着 FPU 状态的实际保存和还原会延迟到指令想要访问它时才做。这是有意义的,因为并不是所有的程序都使用 FPU,但是它使得攻击者可以通过使用该寄存器作为内存地址的一部分来访问不允许它们访问的 FPU 寄存器,这样 CPU 推断性地访问到了它。稍后,CPU 将检测并修复该错误,但这种推测性执行的痕迹仍然留在缓存中,使其可供攻击者使用。
据发现此漏洞的安全研究人员 Colin Percival 表示,与之相关的主要风险在于 AES 加密密钥通常存储在 FPU 的 SSE 寄存器中。尽管 Percival 只花了五个小时来编写漏洞利用代码,他表示,远程利用漏洞要比 Meltdown 困难得多:
你需要能够在与目标进程相同的 CPU 上执行代码,以此方式窃取加密密钥。 你还需要在 CPU 管道完成之前按一定的顺序执行特定操作,因此执行的窗口很窄。
这个新的漏洞类似于 Meltdown( https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5754 ),因为它允许从用户空间程序中读取受保护的内存内容,但它仅限于跨进程边界的某些寄存器内容。
从好的方面来看,这个漏洞可以在操作系统级别修复,而不需要像 Spectre 和 Meltdown 那样使用微码更新。实际上,只有运行特定处理器和操作系统组合的系统才会受到影响。特别是,早期的 Linux 版本(4.9 版本以前),FreeBSD 和一些虚拟机管理程序在 Intel 酷睿 CPU 上运行会受到影响。微软表示,所有Windows 版本都使用Lazy PF 状态还原,并且无法禁用。此外,目前没有缓解措施或解决方法。
虽然目前还不太清楚非Intel 处理器有没有这个漏洞,但 AMD 对 SecurityWeek 称他们的产品不受此影响。
InfoQ 会在有新信息时更新这篇文章。
查看英文原文: Lazy FP State Restore Vulnerability Affects Most Intel Core CPUs
感谢冬雨对本文的审校。
评论