德国研究人员设计了一种新的攻击方法,能够绕过AMD的安全加密虚拟化(SEV)。
由AMD数据中心处理器使用,SEV是一项硬件功能,可提供虚拟机(VM)的安全加密功能,以保护虚拟机内存免受物理攻击,跨虚拟机和基于管理程序的攻击。
在一份白皮书(PDF)中,Fraunhofer AISEC研究人员展示了一个恶意管理程序的攻击,它能够“从SEV加密的虚拟机中以明文方式提取主内存的全部内容” 。SEVered称,该攻击需要远程通信服务在虚拟机中运行。
研究人员称,即使目标虚拟机处于高负载状态,他们的攻击也可用于提取所有内存内容。在加密的虚拟机上运行各种服务的最新AMD SEV服务器平台上测试了SEVered的有效性。
SEV可以使用安全处理器(SP)对单个VM进行透明加密,其中单个密钥用于加密SP中每个受保护虚拟机的内存。硬件实现旨在保护系统免受内存攻击,同时也防止虚拟机管理程序(HV)访问敏感的虚拟机数据。
“通过SEVered,我们证明了恶意HV仍然可能以明文方式提取SEV加密虚拟机的所有内存。我们的基础是观察到主存储器的逐页加密缺乏完整性保护,“研究人员指出。
白皮书写道,HV负责维护虚拟机的主机物理地址(HPA)到主存储器中的物理地址(HPA)映射,从而允许攻击者控制HV以更改虚拟机的内存布局HV。
研究人员解释说:“我们使用这种功能来欺骗虚拟机中的服务,例如Web服务器,根据外部资源的请求,以明文形式返回虚拟机的任意页面。”
为此,他们首先识别内存中与资源相对应的加密页面,然后重复发送请求“同一资源到服务,同时重新映射标识的内存页面”,这导致以明文形式提取所有VM的内存。
“SEVered既不需要详细了解目标虚拟机或服务,也不需要从虚拟机内部勾结出恶意进程。我们的攻击还抵御噪声,即目标虚拟机中的并发活动,并动态适应不同的噪声级别,“该报告写道。
研究人员声称SEVered在实践中是可行的,并且可能允许攻击者在合理的时间内从SEV保护的虚拟机中提取整个内存。他们还表示,这次袭击很好地管理了识别过程中的噪音和资源粘性等关键问题,但请注意,还有改进的余地。
研究人员说,基于软件的对策不足以防止这种攻击。这个问题可以通过提供“对加密以外的访客页面的全功能完整性和新鲜度保护”来解决。然而,研究人员同意这样的解决方案会导致高硅片成本来保护整个虚拟机。
“一个低成本的高效解决方案可以将页面内容的散列与客人分配的GPA安全地结合起来。这确保了通过将GPA更改为HPA映射,不容易交换页面。另外添加一个nonce可以确保GPA的旧页面不会被恶意HV重播到guest虚拟机中。这种方法与AMD SEV的整合可以有效地防止重新映射,“该论文写道。
据研究人员称,即使AMD的SEV加密状态(SEV-ES)也不能抵抗SEVered,因为这种攻击不需要访问由SEV-ES加密的任何虚拟机状态。