写点什么

通过操作 DRAM 控制器寄存器可突破 CPU 内存隔离机制

作者:Olimpiu Pop
  • 2026-09-01
    北京
  • 本文字数:1210 字

    阅读完需:约 4 分钟

AI摘要

该项目揭示内存控制器转换寄存器可绕过CPU层所有主流硬件安全隔离机制,实现无异常的跨域内存访问。其核心在于利用BankSwizzleMode等底层配置位篡改DRAM地址解析逻辑,使上游安全检查失效。配套工具链结合伽罗瓦域建模与SMT求解,实现精确位级映射推导与定向读写。

内存控制器位于所有CPU侧安全屏障之下,是关键信任边界盲区;BankSwizzleMode等寄存器可被非特权软件动态操控;漏洞利用需协同内核模块、缓存控制与SMT建模三阶段 pipeline。

适合硬件安全研究员、固件开发工程师、可信执行环境(TEE)架构师阅读。

安全研究员 Christopher Domas 发布了一个名为 skitter-creek-bath-salts 的开源硬件安全项目。该项目针对的是物理内存层次结构的最底层,打破了传统的 CPU 权限边界。通过操纵内存控制器转换寄存器,该工具能在硬件逻辑层动态修改物理地址与 DRAM 地址的映射关系,使没有特权的软件能够访问隔离的平台内存区域,而不会触发上游架构的内存屏障或故障异常。

现代处理器安全架构假设物理地址会确定性地映射到特定的硅基存储位置。标准安全边界——包括虚拟机管理程序的扩展页表系统管理模式(SMM)的 TSEG 范围限制以及平台安全处理器(PSP)的私有预留区——都运行在 CPU 内核与系统总线互联层,处于内存流量抵达内存控制器之前的路径上。Domas 发现,内存控制器转换寄存器位于这些访问控制屏障之下。通过操纵 BankSwizzleMode 等配置位,可以从根本上改变控制器计算 DRAM 存储体、行和列坐标的逻辑。由于上游安全过滤器仅对未经转换的物理地址进行验证,这些位翻转操作使得标准内存访问能够悄无声息地进入受保护的硬件安全区。

为了在不破坏主机操作系统稳定性的前提下从被扰乱的内存中提取数据,该漏洞利用程序采用了一个多阶段软件管道。一个定制的 Linux 内核模块会将非引导 CPU 内核置于离线状态,清空系统缓存,预热转换后备缓冲区,并禁用中断,从而确保在内存重连过程中内存的稳定性。随后,自动探测脚本利用“优惠券收集者”启发式算法,结合有针对性的用户空间读取操作,对地址位冲突进行分类整理。配套的工具链利用伽罗瓦域算术完成物理地址置换建模,并采用 SMT 求解器推导出精确的位级映射关系。一旦映射关系确定,该漏洞利用程序便会对先前无法渗透的隔离区执行定向地读写突发操作,包括系统管理模式(SMM)RAM、PSP 固件表、CC6 处理器睡眠保存区以及微码补丁缓冲区。

这些发现揭示了一个关键的架构盲点:如果下游内存控制器逻辑允许动态地址替换,那么上游的安全检查就无法保证完整性,这给裸机云和机密计算带来了风险。该漏洞突显了 CPU 特权与平台特权之间的关键区别。AMD 14h、15h 和 16h 系列处理器允许 Ring 0 软件操作这些配置。这种访问级别存在根本性的不足,因为它将内核视为完全可信的主体。为了保障未来系统的安全,硬件团队必须确保在启动过程中严格锁定内存控制器转换寄存器。在面对恶意内核的现实情况,对安全关键的平台配置进行管理时,必须采用高于 CPU 级特权的防护边界。

Reddit 硬件安全和逆向工程社区(例如 r/asm 和  r/blueteamsec)以及 SANS ISC Stormcast 等播客都对该项目表现出了浓厚的兴趣。讨论主要围绕这一发现对架构的影响展开。有专家指出,由于平台安全隔离区位于内存控制器之上,所以它们对原始物理坐标的扰码行为一无所知。专家们还强调了该漏洞利用的实际局限性:它需要攻击者获取到 Ring 0 权限,而且主要是针对相对老旧的 AMD Family 15h 和 16h 处理器上才可访问的寄存器。

原文链接:https://www.infoq.com/news/2026/08/amd-memory-exploit/