xoreaxeaxeax/skitter-creek-bath-salts
Unlocking _everything_ on the CPU with DRAM scrambling
解决的问题
该项目提供了一种方法,通过操作内存控制器的地址转换,绕过某些CPU的硬件级内存保护。它允许访问DRAM中受保护的区域——如平台安全处理器(PSP)、系统管理模式(SMM)和CPU微码——这些区域通常对操作系统内核也完全不可见。
工作原理
该工具通过翻转DRAM控制器转换寄存器中的比特,修改内存层次结构的底层(MCT/DCT层)。这种操作使物理地址映射“混乱化”或打乱,生成可访问受保护内存单元的别名,而不会触发保护标准物理地址的安全屏障。
由于精确的打乱矩阵通常未公开或因型号而异,该项目使用Z3 SMT求解器重建转换矩阵。通过在内存中放置哨兵值并观察其在打乱后出现在何处,工具收集数据点以求解线性映射(GF(2)线性代数),该映射将一致视图地址转换为混乱视图别名。
适用人群
对CPU架构、硬件漏洞和固件安全感兴趣的网络安全研究人员和底层系统工程师,特别是使用AMD Family 16h CPU的用户。
主要亮点
- 绕过硬件屏障:在安全原语生效的层级之下操作,可访问SMRAM和PSP私有内存等内存区域。
- 线性代数方法:使用GF(2)线性代数和Z3,数学推导出内存打乱变换。
- 低级别操作:使用精确的汇编级定时和缓存控制(clflush、mfence、lfence),在不导致系统崩溃的情况下打乱并恢复内存映射。
- 广泛适用性:虽然已在AMD Family 16h上测试,但地址转换变换的基本概念适用于ARM和RISC-V等其他架构。
相关
- 项目
- 项目
- 项目
- 项目
- 项目