虚拟化环境是否容易受到 Row Hammer 攻击?

信息安全 脆弱性 虚拟化
2021-09-05 13:31:53

Row Hammer是一种利用 RAM 缺陷来不受限制地访问 RAM 内容的漏洞,允许读/写其他受保护的内存并在系统上获得更高的权限。

为了工作,这个漏洞会以非常高的速率循环访问合法可访问的内存行,并且没有缓存,并且此操作的频率将导致相邻的受限行的值发生变化。

维基百科对漏洞利用的描述如下:

通过将干扰错误与内存喷射相结合,该漏洞利用能够更改虚拟内存系统用于将虚拟地址映射到物理地址的页表条目 (PTE),从而使漏洞利用获得不受限制的内存访问。

据我了解,虽然此漏洞利用可能能够为攻击者提供来宾系统上的超级用户权限(我不谈论“root”,因为此攻击不依赖于操作系统),但我想知道它是否真的允许他逃离虚拟客人并到达其他客人或主机系统本身。

  • 虽然这种攻击被描述为提供“对安装在计算机中的所有物理内存的无限制访问”,但该内存必须仍然可以被恶意进程寻址。根据我的理解,来宾虚拟化的“物理”内存被映射到实际物理内存的一个区域,并且在硬件(具有硬件辅助虚拟化指令集的 CPU)和软件(虚拟化软件)层都存在多种措施,以确保它无法寻址该区域之外的内存。
  • 为了访问通常受限的内存区域,进程必须修改 PTE。在来宾内部,只能访问来宾系统的 PTE,而不是主机系统的 PTE。
  • 有一个先有鸡还是先有蛋的问题:为了规避虚拟化软件强制执行的内存访问,进程必须更改其内存。然而,由于虚拟化软件在主机系统上运行,恶意进程必须首先能够寻址主机系统内存才能做到这一点。
  • 维基百科的定义提到修改 PTE(页表条目)。现代 CPU 提供二级地址转换(SLAT,又称嵌套分页,以在硬件级别隔离来宾的页表)。我的上述假设是否可以绕过,这会提高虚拟化系统对 Row Hammer 的抵抗力吗?
3个回答

这取决于你的对手,尽管我会说不。

目前,该攻击媒介没有已知的漏洞。因此,如果您的对手是脚本小子,那么您是安全的。

这将是一盒巧克力(不知道你会得到什么),因此是无用的攻击:

  • 漏洞可能允许某人读取或修改不同的行,但不知道哪些信息在哪里使其几乎无用,从而消除了大多数对手。
  • HV 层可以在任何给定时刻重新映射甚至换出内存
  • HV 可能有十几个或一百个不同的 VM,没有办法针对一个。
  • HV 可能会执行 VMotion 之类的操作并将其移动到不同的硬件主机
  • 即使在同一个 VM 上执行 Row Hammer 以获得提升的权限,也会受到上述情况的影响,使其无法预测。

当您的威胁/对手拥有无限资金并专门针对您时,所有赌注都将失败,尽管他们可能会寻求更容易进入环境的途径,包括物理攻击。

考虑到 0-day 漏洞的数量,甚至是 Hypervisor 本身的漏洞,Row Hamm 似乎有点毫无意义。

我认为这需要分解为可以合理回答的较小问题。

虚拟机能否以足够快的速度重复访问相同的内存地址以触发行锤效应?

我看不出为什么这是不可能的。当然,有关虚拟化环境的某些东西最终可能会干扰该过程。理论上,虚拟化环境可以监视该类型的访问模式并尝试阻止它,但我怀疑开销会非常糟糕并且会对性能产生负面影响。我不知道实际实现这一点的任何副手。当然,它也可能会意外地干扰该过程。正如 MikeP 所提到的,它可能只是碰巧在攻击过程中重新映射内存,或者在攻击过程中触发迁移到另一台服务器,甚至只是抢占 VM 以允许另一台 VM 运行。一世'

下一个问题是,如果你能得到一点翻转,你能用它来真正完成一些事情吗?

IMO 这变得更加棘手。虚拟化环境添加了至少一个额外的地址转换层,可以识别行锤目标并且该目标可以随时更改。它还可能隐藏有关正确识别目标所需的底层物理布局的信息。我认为这些潜在挑战之上的挑战甚至触发了位翻转确实使这不切实际,并且可能使制作可靠的利用变得不可能。与可靠的权限提升相比,您更有可能通过使 VM 或整个虚拟环境崩溃来创建 DoS 攻击。

给出了在您的场景中行锤攻击的理论成功率。但实际可能性可能有限或攻击链的复杂性非常高。这不是 Row Hammer本身的限制,它是现实世界场景的依赖项。一个来宾中的攻击者必须影响主机才能获得提升的权限或直接影响另一个来宾在某些情况下这可能是可能的,但需要非常好的准备、大量的时间,甚至需要一些运气。