研究人员发现了一种使用流氓内存模块访问AMD EPYC数据中心芯片中的加密数据的方法。
研究人员透露,AMD的安全加密虚拟化(SEV),旨在保护处理器内存免受虚拟机(VM)环境中的窥探,可以通过一个成本不到10美元的测试装置欺骗访问其加密内存内容。
德国l<s:1>贝克大学、比利时KU Leven大学和英国伯明翰大学的研究人员将其称为“BadRAM”,提出的攻击在概念上简单而廉价:使用一个流氓内存模块欺骗CPU,使其认为自己拥有比实际更多的内存,并让它将其所谓的秘密内存内容写入“幽灵”空间。
研究人员使用了一个人人都能买到的测试平台,包括一个树莓派Pico,花费几美元,以及一个容纳DDR4/5 RAM模块的DIMM插槽。首先,他们操纵内置在内存模块中的串行存在检测(SPD)芯片,在启动时错误报告板载内存的数量——攻击的“BadRAM”部分。
这创建了两个引用相同DRAM位置的物理地址,使用一些反向工程来定位这些内存别名,使它们能够访问内存内容,从而绕过系统的可信执行环境(TEE)。
可访问的内存内容仍然是加密的,但即使达到这个程度也不应该是可能的。AMD的SEV TEE的全部意义在于,它通过加密内存内容来阻止攻击者访问内存,这在物理机器不在组织控制之下的云数据中心尤为重要。正因为如此,AMD的SEV被各大平台提供商广泛应用于云行业,这使得发现该弱点意义重大。
BadRAM会破坏加密吗?
这就是攻击变得更加假设性的地方。使用BadRAM的攻击者可以访问微处理器使用的数据,但不能访问未加密的明文形式。然而,比利时鲁汶大学的Jo Van Bulck表示,这并不意味着数据不能被以其他方式操纵。
“利用BadRAM,你不仅可以读取加密内容,还可以覆盖加密内容,”他通过电子邮件告诉CSO在线。这是加密静态特性的一个功能,它以攻击者可以预测的方式加密密文中的值。
他举了一个银行账户的例子,该账户显示了100美元的加密余额。如果随后的支出减少了这个数字,攻击者理论上可以用更高的原始价值(但仍然是加密的)100美元来代替它。
“在AMD的CPU中,基本上没有办法将这个陈旧过时的值与正确的当前值区分开来,”Van Bulck说。
攻击者需要物理访问
上述是一种重放攻击,可能需要时间和额外的软件来与加密数据交互。这将给大型数据中心环境中的任何攻击者带来实际的挑战,因为监控是非常重要的。
然而,最大的限制可能是任何攻击都需要对运行虚拟机的系统进行物理访问。虽然这在内部人员或流氓管理场景中是合理的,但与远程或仅软件利用相比,它确实降低了攻击的可能性。
BadRAM可以用于非amd系统吗?
研究人员表示,BadRAM攻击被用来攻击非amd处理器的可能性似乎更小。英特尔的软件防护扩展(SGX)和可信域扩展(TDX),以及Arm即将推出的机密计算架构(CCA)也使用tee,但采用了对抗内存混叠攻击的对策。
然而,根据范博克的说法,在英特尔的情况下,这将取决于所使用的SGX的一代。追溯到2015年的新交所可能会受到影响,但由于加密功能强大,影响很小。
然而,由于内置的反BadRAM防御,最新的TDX和SGX可信执行技术不会受到损害。这对Arm的CCA(保密计算架构)的影响目前还不清楚。
“我们认为BadRAM理论上应该适用于这些即将推出的平台,但它们尚未公开发布,”Van Bulck说。“我们希望CCA平台将有类似的检查,以检测启动时的BadRAM攻击企图,然而,由于Arm环境的固有异质性,这可能会进一步复杂化。”
AMD的BadRAM修复
今年2月,研究人员向AMD透露,该漏洞被追踪为CVE-2024-21944,与该公司的第三代和第四代EPYC企业处理器有关。
AMD建议使用锁定SPD的内存模块,并遵循物理安全最佳实践。它还发布了固件更新,尽管这些会因每个OEM的BIOS而有所不同,它说。
该公司表示,计划将缓解提醒放在显眼位置。它说:“主机操作系统/管理程序提供了特定的状态信息,可以使用,虚拟机(Guest)也可以使用,以表明已经部署了缓解措施。”
底线
人们很容易认为BadRAM被夸大了。它有一个奇特的名字和令人难忘的标志,隐约让人想起《愤怒的小鸟》中失望的角色。
相反的观点是,这是芯片制造商应该发现的那种基本弱点,而不必有人向他们指出。使用IT团队听说过的标识和名称是让供应商和他们的客户修复问题和应用补丁的一种方法,因为这个行业的补丁通常被推迟到另一天。
自今年夏天以来,坏内存是AMD硬件中的第二个重大漏洞。今年8月,一家安全厂商发布了“Sinkclose”(CVE-2023-31315)漏洞的详细信息,该漏洞影响了几乎所有AMD EPYC系列和Ryzen系列cpu。