Hacker News 中文摘要

RSS订阅

DRAM的意面化 -- Spaghettifying DRAM

文章摘要

该项目通过操纵DRAM控制器,重新映射物理内存地址,从而突破CPU的内存保护机制,解锁平台安全处理器、系统管理模式等原本被隐藏或保护的内存区域。

文章总结

好的,作为一名专业的中文编辑,我将对您提供的英文内容进行中文重述,保留核心细节,并删减与主题无关的冗余内容。


项目概述:通过DRAM地址加扰解锁CPU的一切

本项目名为 skitter-creek-bath-salts,其核心目标是利用DRAM控制器中的地址加扰机制,绕过CPU、固件和芯片组为保护敏感内存区域而设置的所有安全屏障,从而访问这些本应无法触及的数据。

核心原理:

  1. 内存访问的“漫长旅程”:当程序访问一个指针 *p 时,它并非直接访问物理内存。p 是一个虚拟地址,需要经过MMU页表转换、缓存查找、内存控制器等多个抽象层的处理,最终才能映射到DRAM中的具体物理单元。这个过程的最后一步,是由内存控制器(MCT/DCT)将物理地址转换为DRAM的行、列、bank等坐标。

  2. 攻击点:DRAM地址加扰:现代内存控制器为了优化性能,会对物理地址进行加扰(scramble),例如通过XOR运算重新映射地址。这个加扰过程发生在所有上层安全机制(如SMM、PSP的内存隔离)之后。因此,如果能够篡改这个加扰过程,就可以在不触发任何上层安全机制的情况下,访问到受保护的内存区域。

  3. 攻击方法

    • 篡改加扰:通过修改内存控制器的一个寄存器(例如 xor dword [0xf80c2094], 0x00400000),可以瞬间改变DRAM的地址映射关系,使内存进入一个“混乱”的视图。
    • 快速切换:攻击的关键在于,在篡改加扰后,必须非常快速地读取目标数据,然后立即恢复加扰设置,以避免系统崩溃。这需要精心设计,例如禁用其他CPU核心、预热缓存、关闭中断等。
    • 破解映射:由于加扰算法是线性的(GF(2)线性映射),可以通过线性代数方法(使用z3求解器)来破解。具体做法是:在正常视图下写入一个标记值,切换到混乱视图后扫描内存找到该标记,从而获得一对“正常地址”和“混乱别名”。收集多对这样的数据,即可解算出完整的地址转换矩阵。这个矩阵就像一个“罗塞塔石碑”,可以将任何受保护地址转换为在混乱视图中可访问的别名。

攻击成果:

通过上述方法,可以解锁并访问以下关键保护区域:

  • 平台安全处理器(PSP):可以读取PSP的私有DRAM,例如提取其RSA模幂运算的固件代码。
  • 系统管理模式(SMM):可以读取SMM处理程序的入口代码,这些代码运行在CPU最高特权级(Ring -2),通常被认为无法被读取。
  • C6状态DRAM:当CPU核心进入深度睡眠状态(C6)时,其完整的寄存器上下文会被保存到DRAM的一个特定区域。通过攻击,可以读取这些保存的寄存器值,包括一些Ring 0也无法访问的内部CPU寄存器。
  • CPU微码:CPU在进入C6状态时,会将加载的微码补丁保存到DRAM中。通过攻击,可以读取甚至修改这个微码副本。

项目工具与使用:

项目提供了一系列用户空间工具,用于执行上述攻击:

  • dram_read:从受保护地址读取一个双字。
  • dram_dump:从受保护的内存范围读取数据。
  • dram_poke:向受保护的内存范围写入数据。
  • dram_carveouts:解析并显示受保护的内存区域(如PSP、C6)的基地址和大小。
  • gather_aliases.py / unspaghettify.py:用于收集地址对并解算地址转换矩阵的分析工具。

适用范围与意义:

该项目主要在AMD Family 16h CPU上开发和测试,但其揭示的原理——内存控制器地址转换是上层所有安全机制的底层基础——适用于所有现代CPU架构,包括Intel、ARM、RISC-V等。它表明,所有依赖DRAM的安全技术(如SEV、SGX、TrustZone等)都可能因为底层地址映射的漏洞而受到威胁。

作者: Christopher Domas (@xoreaxeaxeax)

评论总结

根据评论内容,总结如下:

主要观点与论据:

  1. 技术突破与影响:评论普遍认为这是一项重大发现,将硬件攻击(如动态内存别名攻击)扩展至软件可达层面。Retr0id 指出:“This is like a software-reachable version of the dynamic memory aliasing hardware attack”(这类似于软件可达的动态内存别名硬件攻击)。dzdt 关注其影响:“ring 0 root has access to pretty much everything that was hidden in negative ring territory”(ring 0 根权限可访问负环区域中隐藏的几乎所有内容)。

  2. 研究者背景与期待:多位评论者对研究者 Christopher Domas 表示高度认可。MattSteelblade 称其为“one of my absolute favorite all-time hackers”(我最喜欢的黑客之一),并期待其 Black Hat 演讲。aecsocket 回忆其 Defcon 演讲,表示“being amazed at what he's been able to discover”(对他发现的内容感到惊叹)。

  3. 对AI撰写报告的争议:部分评论批评研究者使用AI撰写报告。mschuster91 质疑:“why on earth do they have to use AI to write their writeups”(为什么非得用AI写报告)。ipdashc 表示失望:“the Claudeisms made it such a slog”(Claude式的表达让人读起来很吃力)。但 throwaway2027 反驳:“the discovery is what matters”(发现本身才是关键)。

  4. 技术细节与疑问:评论关注攻击范围、修复可能性及实际影响。devttyeu 问:“whether this can break out of KVM and whether it can be microrode patched”(能否突破KVM,能否通过微码补丁修复)。gmueckl 质疑测试平台(AMD Jaguar,10年以上)的时效性:“whether this has been quietly addressed already”(是否已被悄悄修复)。fulafel 询问硬件设计初衷:“What is the DCT swizzling functionality designed for”(DCT交换功能最初的设计目的是什么)。

平衡性总结: - 正面评价:多数评论认可技术突破和研究者能力,期待后续演讲。 - 负面/质疑:对AI撰写报告表示不满;对攻击范围(仅限旧CPU)、实际威胁模型(需物理DRAM访问或特权)及修复可能性提出疑问。 - 中立/信息性:部分评论请求更通俗的解释(ELI5),或关注其他处理器家族是否受影响。