四个硬件保护区域,一个寄存器位,全部失守。安全研究员Christopher Domas公开了一项针对AMD Family 16h处理器的攻击方法:通过操纵内存控制器的地址转换逻辑,攻击者可以读取甚至改写处理器中受硬件保护的敏感内存区域。
这项研究已经以“Skitter Creek Bath Salts”为名在GitHub上开源,包含完整的工具代码。它并非传统的软件漏洞或固件缺陷,而是作用于内存寻址的最底层。
攻击原理:翻转一个寄存器位
要理解这个攻击,先要看内存访问的基本路径。当CPU要访问某个物理地址时,数据并不会直接到达DRAM芯片,中间会经过内存控制器——它负责把物理地址转换成通道、列、行等具体坐标。
Domas发现,在AMD Family 16h处理器上,控制“Bank Swizzling”(存储体交错)模式的一个寄存器位可以在运行时被切换,而且不会被锁定。
翻转这一位,物理地址到DRAM单元的映射就会临时改变,产生一个“别名”(Alias)地址。系统在不知情的情况下,会通过一个看似合法的地址,访问到本应受保护的DRAM区域。访问完成后,寄存器还能恢复原状,整个过程几乎不留痕迹。
四个硬件保护区域受影响
利用这个别名地址,攻击者可以触及多个关键硬件保护区域:
- 平台安全处理器(PSP):AMD处理器中独立的ARM核心,负责安全启动和密钥管理。攻击者可提取其私有内存中的数据,包括fTPM用于签名的RSA模幂运算代码。
- 系统管理模式(SMM):CPU中权限最高的执行模式(Ring -2),其内存SMRAM对操作系统和内核均不可见。攻击者可读取SMM入口代码,理论上可进一步破坏系统固件完整性。
- C6电源状态数据:CPU核心进入深度休眠C6状态时,完整架构上下文会保存在DRAM中。攻击者可获取CR3寄存器(页表根)、APIC基址等敏感信息。
- CPU微码:CPU从C6状态唤醒时,会从DRAM重载微码补丁。攻击者可以读取甚至篡改这份DRAM中的微码副本。
影响范围:老APU家族,不含锐龙
AMD Family 16h是AMD于2013年起推出的低功耗、入门级微处理器家族,全部产品均为集成CPU和GPU的APU,主打低功耗笔记本、平板电脑、微型服务器和嵌入式设备。这一家族最著名的应用是第八代游戏主机PS4和Xbox One的核心定制SoC。
Domas明确表示,该攻击方法已在AMD Family 16h处理器上开发并测试成功,涉及较老的Jaguar和Puma架构APU,包括Kabini、Temash、Beema和Mullins。该漏洞不影响现代的锐龙(Zen架构及以后)处理器——后者属于Family 17h或更新家族。
AMD已通过安全公告(AMD-SB-7068)确认此问题。AMD表示,Family 15h(推土机架构及其改良版)和16h处理器中控制内存地址转换的配置寄存器可能无法被锁定。由于这些老旧的处理器家族已停止安全支持,AMD不会为其发布修复补丁。
值得注意的是,利用该漏洞需要攻击者已获得系统的root或管理员权限。因此,它无法作为初始入侵手段,但构成严重的权限提升和内部威胁。Domas同时强调,虽然现代AMD、Intel、ARM和RISC-V处理器的内存控制器也存在类似的地址转换机制,但这并不意味着它们有同样的漏洞,相关研究才刚刚开始。
热门跟贴