幽灵安全漏洞可以在虚拟机中吗?

13 vmware virtualbox virtual-machine spectre

像VirtualBox这样的虚拟机有没有可能存在安全漏洞“幽灵”?我认为 VM 可能会乱序执行,但在我看来,不可能通过查看缓存来读取结果。

有没有解释如何读取虚拟 CPU 的缓存?

Mok*_*bai 15

是的,Spectre 可以跨越主机/来宾、来宾/主机和来宾/来宾边界,因为这是 CPU 级别的缺陷,这意味着潜在的敏感信息可能会在 CPU 内核上运行的任何东西之间泄露。

互联网上的大多数新闻报道都说,云提供商受此影响最严重,因为他们拥有大量虚拟化的系统集群,可能会被滥用以泄露敏感信息。

大多数大型供应商现在应该已经修补了这些缺陷,尽其所能,但这将是一个与我们共存一段时间的问题。

Security.SE 对此有一个规范的问答,它提到了 VM:

我正在运行虚拟机/容器,我在多大程度上容易受到攻击?

根据Steffen Ullrich 的回答

  • Meltdown 攻击不会跨虚拟机,只会将内核内存泄漏到本地进程。
  • Spectre 可以跨虚拟机工作。

此外,再次来自Steffen,Meltdown 和 Spectre 使用容器,因为容器依赖于主机内核。

VM 使用系统中的实际 CPU,其中一些特权指令被捕获并能够被重定向。它使用与主机相同的缓存和指令。它本质上只是系统物理 CPU 中的另一层。

虚拟化之所以快,是因为它使用物理 CPU 并尽可能少抽象,并依赖 CPU 硬件来提供隔离。像 qemu 这样的东西可以进行仿真,这会更安全,因为它不是硬件 CPU,但它慢得多,并且与虚拟化不同。

再次来自Security.se 规范帖子

Spectre 在不同的级别上工作,并且不允许从用户空间访问内核空间数据。在这种攻击中,攻击者欺骗推测执行以预测错误地执行指令。简而言之,预测器被迫预测特定的分支结果(如果 -> 真),这会导致请求受害进程通常不会请求的越界内存访问,从而导致错误的推测执行。然后通过侧信道,检索此内存的值。这样,属于受害进程的内存就会泄露给恶意进程。

因此,因为 VM 在实际的 CPU 硬件中运行,它需要做的就是运行一个特定的循环来“训练”推测执行引擎。然后它可以使用精确的时间来观察缓存中的特定访问模式,这些模式表明它正在寻找利用的主机或来宾(或其他 VM)进程。

通过这种方式,这意味着机器可以在各个方向上被利用。从主机到虚拟机,从虚拟机到主机,从虚拟机到虚拟机。

是的,这绝非易事,而且很难实现,因为 VM CPU 内核可能会随主机的一时兴起而改变,并且主机也可以愉快地在不同内核上调度任务,但是在很长一段时间内需要足够的信息可能会泄露以放弃某些重要系统或帐户的密钥。如果有足够的时间和一些适当的隐蔽软件,一切都可能是开放的。

如果你想要一个“安全”的虚拟机,那么你必须保证它的核心是隔离的。阻止这种攻击的唯一真正方法是“强制”主机和虚拟机仅使用某些内核,以便它们永远不会在相同的硬件上运行,但这会导致成本的有效增加,因为您将无法在给定的主机上有尽可能多的虚拟机。如果运行的虚拟机数量超过可用内核数,您将永远无法逃脱,这是我希望在“低负载”服务器上完成的事情,因为许多系统在其生命周期的 90% 内都处于闲置状态。

  • 我认为您将这个问题解释为“如果主机 CPU 受到影响,VM 也会受到影响吗?” 正如我所理解的问题,它询问“如果主机 CPU *不*受到影响,VM *仍然*会受到影响吗?” 你能把它弄清楚吗? (2认同)