一位以挖掘CPU"规格之外"行为闻名的安全研究者xoreaxeaxeax,在GitHub上放出一个名字很随意的项目:skitter-creek-bath-salts。项目说明只有一句话,却列了一张吓人的清单——通过操纵DRAM控制器的地址转换寄存器,可以解锁AMD平台上的Platform Security Processor(PSP)信任根、System Management Mode(SMM)特权模式、C6深度睡眠锁定,以及CPU微码。核心手法只有一行代码:对内存控制器的一个寄存器做一次异或位翻转。

这不是又一个具体漏洞编号,而是把攻击面挪到了一个几乎没人设防的地方——内存控制器本身。此前所有关于CPU安全的讨论,几乎都建立在一个从没被公开质疑过的假设上:软件看到的"物理地址",就是硬件真正读写的位置。这项研究说,不一定。但目前,这个说法只在一款已经停产多年的AMD芯片代际上被验证过。

*p要走五层楼,锁只挡在半路

一次简单的内存读取,要经过虚拟地址转换、页表walk、多级缓存一致性协议、系统互联,最后才落到内存控制器手里,被拆成bank group、bank、row、column这样的DRAM坐标。PSP、SMM、微码签名、C6锁,检查的都是"这个物理地址落在哪个范围",从没检查过"这个物理地址实际对应DRAM里的哪一行、哪一列"。

这中间还有一道几乎没人提起的转换:内存控制器要做channel/rank/bank的交织哈希,把"物理地址"重新映射成真实的存储坐标。这道转换过去被当成厂商锁死、软件摸不到的透明层。原作者的判断很直接:安全检查锚定在物理地址上,而数据真正落地的终点在DRAM坐标上,两者本该唯一对应,但只要控制器允许被重新编程,这个对应关系就不再唯一。

从*p到DRAM:锁挡在第几层 CPU核心 / MMU 页表 · TLB · 权限位 · PSP/SMM入口检查 缓存与一致性 L1/L2/LLC · MESI/MOESI一致性协议 系统互联 Infinity Fabric / 数据结构层 内存控制器 MCT/DCT channel/rank/bank交织哈希——一行XOR可改写
锁挡在半路,秘密藏在终点,中间那段路谁在管?

一行XOR之后,秘密怎么被"偷"出来

这套手法能落地,靠的是一个数学上的巧合:内存控制器的地址转换是GF(2)线性映射。这意味着即便不知道厂商具体怎么打乱了地址,只要能同时观察"打乱前"和"打乱后"两种映射,就能用线性代数把打乱前后的对应关系反推出来——不需要猜,算出来就行。

操作本身很暴力,也很讲节奏:关掉其他核心和中断,预热目标数据的缓存和TLB,翻转控制器寄存器让内存进入"打乱视图",读一次目标数据,立刻翻回原状,恢复中断,全程只用几条指令,耗时以微秒计。平台在这几微秒里其实经历了一次内存坐标的整体错位,但因为没有真正搬动DRAM颗粒里的数据、也没让DRAM本身进入不稳定状态,系统恢复后毫无痕迹。

五步操作:不惊动系统偷走秘密 预热缓存 /TLB 关闭中断 停其它核心 翻转DCT位 一次XOR 读取保护区 拿到数据 复原映射 恢复中断 耗时以微秒计 · 其余核心和中断全程关闭 · 事后毫无痕迹
  • 风险.这套手法建立在已经拿到内核级执行权限的前提上,本质是把"内核已陷落"升级成"PSP/SMM也陷落",不是能远程触发的漏洞。

为什么挑16h,17h之后文档为何消失

作者选AMD Family 16h不是随手一挑。这一代是最后一个在公开数据手册里详细记录DRAM控制器转换寄存器、并且明确写着"这些寄存器无法被锁定"的AMD代际。从Family 17h开始,官方文档里这部分内容整体消失,后续代际的资料一直没再补上。

这个消失可以有两种解释:一种是AMD在硬件或固件层面已经悄悄把这个口子锁死或修复;另一种纯粹是文档简化,跟这个漏洞毫无关系。原文和公开检索都没有给出能确证任何一方的证据,这是目前必须老实存疑的地方。

更关键的限制是:联网检索没能找到任何针对这个项目或"Spaghettifying DRAM"技术的第三方评测、复现报告或学术论文。作者自己在项目说明里也留了一句克制的话——现在的代码"只展示了如何开始"。至于原文提到的这套底层变换"甚至能延展到ARM、RISC-V",目前也只是作者的推断,没有独立证据支撑。

文档消失的转折点 Family 16h 寄存器文档公开 官方注明:无法锁定 Family 17h+ 相关文档消失 补锁了?还是漏写? 两种解读都成立,目前均无公开证据
  • 结论.目前能确认的只是一代老芯片上一个具体寄存器的配置漏洞,从"能做到"到"普遍能做到"之间,还差一次独立复现。

真正该盯这件事的,是仍在跑Family 16h芯片的嵌入式和低功耗设备厂商——它们的PSP信任根和微码签名理论上可以被本地攻击者绕过。安全研究和红队社区大概会顺着这个思路,去试探17h及以后的AMD芯片、甚至Intel和ARM平台是否有类似口子。云计算厂商也该多问一句:同类内存控制器层的漏洞,是否可能被用来跨虚拟机、跨租户读取本该隔离的内存。接下来最该看的,是AMD有没有发安全公告或CVE,以及有没有人真的在新一代芯片上复现出同样的把戏。