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


13

像VirtualBox这样的虚拟机是否可能具有“ spectre”安全漏洞?我认为VM可能执行了乱序执行,但我认为不可能窥视缓存以读取结果。

是否有任何解释说明如何读取虚拟cpu的缓存?


4
是的,仅需进行少量研究即可确认VMWare已发布补丁来解决Spectre和Meltdown问题。来宾OS必须已附加实际的虚拟机管理程序(两种类型)的
补丁

我说,取决于虚拟化的水平。如果要模拟虚拟CPU,则可能很安全。但这不是现代VM要做的。
Bergi

是否有任何解释说明如何读取虚拟cpu的缓存?

1
@jms详细信息在我在回答中链接的规范帖子中:Spectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
Mokubai

1
@jms虚拟化之所以快,是因为它使用物理CPU并尽可能少地进行抽象,并且依靠CPU硬件来提供隔离和抽象。诸如此类的事情qemu可以进行仿真,因为它不是硬件 CPU,所以会更安全,但它速度慢得多,并且与虚拟化不同。
Mokubai

Answers:


14

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

互联网上的大多数新闻报道都谈到云提供商受到的打击最严重,因为它们拥有大量已虚拟化的系统集群,并可能被滥用以泄露敏感信息。

到目前为止,大多数大型供应商都应该尽其所能对漏洞进行修补,但这将是一个与我们共存一段时间的问题。

Security.SE对此具有规范的问答,其中提到了VM:

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

根据斯特芬·乌尔里希(Steffen Ullrich)的回答

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

同样,再次Steffen出发,Meltdown和Spectre与容器一起工作,因为容器依赖于宿主内核。

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

虚拟化之所以如此之快,是因为它使用物理CPU并尽可能减少抽象,并依靠CPU硬件来提供隔离。像QEMU事情可以做仿真这将是更安全的,因为它不是一个硬件CPU,但它是慢,从虚拟化不同。

再次从Security.se规范帖子中

Spectre在另一个级别上工作,并且不允许从用户空间访问内核空间数据。在这种攻击中,攻击者欺骗了推测性执行,以错误地预测性地执行指令。简而言之,预测器被强制预测特定的分支结果(如果-> true),这将导致请求受害进程通常不会请求的超出范围的内存访问,从而导致错误的推测执行。然后通过辅助通道检索此存储器的值。这样,属于受害者进程的内存就会泄漏给恶意进程。

因此,由于VM在实际的CPU硬件中运行,并且它所需要做的就是运行特定的循环以“训练”推测性执行引擎。然后,它可以使用精确的计时来监视高速缓存中的特定访问模式,以指示要利用的主机或来宾(或其他VM)进程。

这样就意味着一台机器可以在各个方向上被利用。从主机到VM,从VM到主机,以及从VM到VM。

是的,这绝非易事,而且很难完成,因为VM CPU内核可能会随主机的变化而变化,并且主机也可以在不同的内核上愉快地调度任务,但是要经过很长时间才能获得足够的信息可能被泄露以放弃一些重要系统或帐户的密钥。如果有足够的时间和一些适当的隐秘软件,则所有内容都可能处于打开状态。

如果您想要一个“安全的” VM,那么您必须保证它的核心是隔离的。阻止此攻击的唯一真实方法是“强制”主机和VM仅使用某些内核,以使它们永远不会在同一硬件上运行,但这将导致成本有效增加,因为您将无法在给定主机上具有尽可能多的VM。您将永远无法摆脱运行比可用内核更多的虚拟机,这是我期望在“低负载”服务器上完成的工作,因为许多系统在其90%的生命中处于空闲状态。


2
我认为您将问题解释为“如果主机CPU受到影响,VM也将受到影响吗?” 据我了解的问题,它会询问“如果主机CPU是不会受到影响,可以在虚拟机仍然会受到影响?” 你能清理清楚吗?
AndreKR

1
@AndreKR:当前所有乱序执行CPU均受Spectre影响;只有通过软件解决方法,您才能使系统安全(因此,VM必须对此加以考虑,尽管如果CPU提供了功能(例如,英特尔的IBRS组件),则管理程序可以将来宾系统彼此隔离)。但是在没有推测执行的有序CPU上,任何两个软件之间都不会存在任何种类的Spectre漏洞。Spectre的本质是挑衅性地执行某种使秘密数据进入微体系结构状态的事物。有序CPU则没有。
彼得·科德斯

最有趣的不是投机执行。最有趣的是,一个进程如何找出高速缓存中的内容,即使在VM中也是如此。

@jms可用的侧信道攻击通过推测执行得以促进并变得有用。该过程可能无法直接读取高速缓存行,但是推测性执行可能会通过执行将值放入到高速缓存中的计算来泄漏信息,这些值可以通过定时攻击来检测或推断。幽灵白皮书的第4节有一个很好的解释:spectreattack.com/spectre.pdf
Mokubai

0

宝石5

如果您有兴趣在不使用主机CPU的情况下纯粹通过仿真来研究/复制漏洞,那么我认为QEMU不够详细,无法对其进行观察,因为它不会模拟CPU管道。

但是,gem5用于评估研究和开发中的系统性能,并且确实模拟了足够的CPU内部组件,使您可以在完全干净且受控的环境中观察Spectre。

带有可视化功能的x86_64酷演示已发布在:http : //www.lowepower.com/jason/visualizing-spectre-with-gem5.html

gem5的缺点是,它比QEMU慢得多,仿真更加详细。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.