Row Hammer是一种利用 RAM 缺陷来不受限制地访问 RAM 内容的漏洞,允许读/写其他受保护的内存并在系统上获得更高的权限。
为了工作,这个漏洞会以非常高的速率循环访问合法可访问的内存行,并且没有缓存,并且此操作的频率将导致相邻的受限行的值发生变化。
维基百科对漏洞利用的描述如下:
通过将干扰错误与内存喷射相结合,该漏洞利用能够更改虚拟内存系统用于将虚拟地址映射到物理地址的页表条目 (PTE),从而使漏洞利用获得不受限制的内存访问。
据我了解,虽然此漏洞利用可能能够为攻击者提供来宾系统上的超级用户权限(我不谈论“root”,因为此攻击不依赖于操作系统),但我想知道它是否真的允许他逃离虚拟客人并到达其他客人或主机系统本身。
- 虽然这种攻击被描述为提供“对安装在计算机中的所有物理内存的无限制访问”,但该内存必须仍然可以被恶意进程寻址。根据我的理解,来宾虚拟化的“物理”内存被映射到实际物理内存的一个区域,并且在硬件(具有硬件辅助虚拟化指令集的 CPU)和软件(虚拟化软件)层都存在多种措施,以确保它无法寻址该区域之外的内存。
- 为了访问通常受限的内存区域,进程必须修改 PTE。在来宾内部,只能访问来宾系统的 PTE,而不是主机系统的 PTE。
- 有一个先有鸡还是先有蛋的问题:为了规避虚拟化软件强制执行的内存访问,进程必须更改其内存。然而,由于虚拟化软件在主机系统上运行,恶意进程必须首先能够寻址主机系统内存才能做到这一点。
- 维基百科的定义提到修改 PTE(页表条目)。现代 CPU 提供二级地址转换(SLAT,又称嵌套分页,以在硬件级别隔离来宾的页表)。我的上述假设是否可以绕过,这会提高虚拟化系统对 Row Hammer 的抵抗力吗?