上周 Intel 曝出影响 2011 年以来几乎所有芯片的漏洞ZombieLoad,利用该漏洞,攻击者可以对芯片发起边信道攻击,在同一 CPU 上执行恶意进程,进而获取 CPU 的微架构缓冲器中的存储器内容。
攻击者可以访问存储缓冲区,加载端口并填充缓冲区的陈旧内容,这些缓冲区可能包含属于另一个进程的数据或源自不同安全上下文的数据。因此,在用户空间进程之间、内核与用户空间之间、虚拟机之间或虚拟机与主机环境之间可能都会发生意外的内存泄露。
ZombieLoad 与其它推测性执行边信道攻击不同,因为攻击者无法定位特定数据。攻击者可以定期对缓冲区中的内容进行采样,但是在采集样本时无法控制缓冲区中存在的数据。因此,需要额外的工作来将数据收集并重建为有意义的数据集。这也是ZombieLoad 比较复杂的地方。
虽然 ZombieLoad 得到有价值数据的成本比较高,但是各大公司都十分重视这个漏洞,毕竟它影响了 2011 年以来几乎所有芯片,打击范围十分广泛。
Intel 自己已经发布了微代码,从架构上缓解该问题,其它科技公司如苹果、微软与谷歌也都相继发布了补丁。
但同时也有一些公司认为光有补丁并没有什么作用,比如Red Hat 认为在云场景上 ZombieLoad 危险很大,因为你完全无法控制相邻虚拟机中的用户正在运行的内容,云安全公司 Twistlock 的首席技术官 John Morello 也指出:“这个漏洞可能对密集的、多租户的公有云提供商产生最大的影响。”
另一边,Ubuntu 目前也已经给出了补丁,但是其在安全公告中表示,如果用户系统中有不受信任或潜在的恶意代码,则建议其禁用超线程功能。
如果您的处理器不支持超线程(也称为对称多线程(SMT)),则内核和相应的 Intel 微代码软件包更新将完全解决 MDS(ZombieLoad)漏洞。如果您的处理器支持超线程并且启用了超线程,则 MDS 不会完全缓解。
所以,如果想要完全缓解漏洞,你需要暂时放弃CPU 的超线程能力。事实上,苹果和谷歌都已经警告 macOS 和 Chrome OS 用户禁用超线程可获得全面保护,并且谷歌现在默认从 Chrome OS 74 开始禁用超线程。
但是禁用超线程的性能代价实在有点高,结合对比一下 ZombieLoad 微代码与补丁对系统性能影响的数据:
Intel发言人表示,大部分打过补丁的设备在最坏的情况下可能会受到 3% 的性能影响,而在数据中心环境中可能会是 9%。
另一边,PostgreSQL 基准测试发现,禁用超线程后,性能下降了近 40%;Ngnix 基准测试的性能下降了约 34%;Zombieload 的研究人员表示禁用超线程会使某些工作负载的性能下降 30% 至 40%。
安全还是性能,如何选择呢?