HN精选|DRAM加扰攻击

DRAM加扰逆向,软件解锁CPU全部保护

知名硬件逆向工程师 xoreaxeaxeax(Sandsifter 作者)发布了新项目 skitter-creek-bath-salts:通过重写内存层次结构底层的「DRAM 地址加扰(scrambling)」变换,重新排列物理内存地址映射,从而打乱平台内存、暴露连内核都看不见的受保护 DRAM 区域——并以此解锁平台安全处理器(PSP)、系统管理模式(SMM)、C6 深度休眠 DRAM 乃至 CPU 微码更新。「当地址翻译被打破,建立在其上的安全原语也随之瓦解」,项目简介这样写道。

技术原理:*p 的漫长旅程

当代码解引用指针 *p 时,p 只是虚拟地址:在触及任何 DRAM 位之前,它必须穿越 MMU 页表、TLB、缓存层级,最后到达内存控制器(MCT/DCT)的地址变换。项目发现,AMD Family 16h 是最后一代在数据手册中公开了 DRAM 控制器地址变换寄存器(且注明不可锁定)的 CPU,其后继世代(17h 及以上)干脆不再公开这些信息。攻击者可以在运行中的系统上重编程 MCT/DCT 变换——本质上把 *p 管线的最底层「重新接线」,把内存从所有建立在它之上的保护机制脚下抽走。

攻击演示:一把计算器即可

项目展示了极简的利用代码:通过 MMIO TLB 预填充、缓存行驱逐(clflush)与内存屏障(mfence/lfence)的组合,在特定时刻重写变换寄存器,让一次本应命中的 DRAM 读取落入「加扰后的视图」。整个流程只需几条汇编指令,任何受保护内存区域「用一把计算器就能到达」。这种手法与公开的 Battering RAM 动态内存别名攻击异曲同工,但它是纯软件可达的版本,门槛更低。

社区反响:逆向工程的深度与写作风格的吐槽

项目在 HN 上获得 472 分、137 条评论。有评论者感叹:「RAM 总线一直被认为因速度与信号完整性要求而无法触碰,他们绕过了这一点」;也有人将其比作「软件可达版的动态内存别名硬件攻击」。不过评论区也出现了一致的吐槽——「为什么他们要用 AI 来写这些分析文章?同一个观点反复改写,读起来很累」。技术本身的价值并未因此被质疑:该研究揭示,即使现代 CPU 层层加锁,物理内存地址变换这一「最后防线」一旦被逆向,上层所有安全机制都可能被釜底抽薪。

原文:GitHub: skitter-creek-bath-salts | HN 讨论:news.ycombinator.com/item?id=49286341

Leave a Reply

Your email address will not be published. Required fields are marked *