现代CPU的DRAM控制器里藏着一组特殊寄存器,平时几乎没人注意。安全研究者通过“DRAM scrambling”技术,把物理地址翻译重新接线,让任意内存地址可以落到位;一旦绕过这层变换,平台内存中被刻意隐藏的保留区域就会暴露出来。包括平台安全处理器、系统管理模式、C6 DRAM和CPU微码,这些在官方规范中语焉不详的部分,全都变成了可解锁对象。 “&x == &x”通常成立,但并不是必然成立。研究者把这种方法命名为 skitter-creek-bath-salts:它深入内存层次结构的最底层,重写DRAM物理地址翻译,让依赖该翻译的内存隔离失去基础。当翻译被打散,建在翻译之上的保护墙也随之倒塌。 这项技术已经在一颗AMD Family 16h CPU上完成开发和测试。这是最后一代在数据手册中公开DRAM控制器翻译寄存器的产品,而手册甚至明确写道:这些寄存器无法被锁定。17h及之后的型号则干脆不再提供这些信息。类似的地址变换不仅存在于AMD平台,也延伸到ARM、RISC-V等架构;skitter-creek-bath-salts展示的只是一种开始。 为什么要从最底层入手?因为内存访问是一层层叠加的:CPU发出64位虚拟地址,先做canonical形式检查,再加上FS/GS等段基址,接着查询TLB;未命中时,由硬件页遍历器从CR3开始逐级查找PML5/PML4/PDPT……最终才得到“看起来”对应DRAM的物理地址。DRAM scrambling恰恰在这一层把物理地址翻译重新洗牌,让原本深藏在内存层级底部的秘密不再安全。 可解锁能力包括: - 解锁平台安全处理器(PSP) - 解锁系统管理模式(SMM) - 解锁C6 DRAM - 解锁CPU微码 这是一个漫长的下行通道。内存建立在极其深层的抽象之上,而最底层的那一道地址变换,往往就是所有安全边界的最后支撑。skitter-creek-bath-salts证明:一旦这道支撑可以被重写,“解锁一切”就不再是一句空话。
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.