C · 项目报告

xoreaxeaxeax/skitter-creek-bath-salts

Unlocking _everything_ on the CPU with DRAM scrambling

已完成 打开 GitHub
X
1,487星标
123Fork
2Issue
MIT许可证

分析结果

项目分析

这是一个面向底层硬件安全研究的 C 项目,演示通过修改 AMD CPU/平台的 DRAM 控制器地址转换与 scrambling/swizzle 相关寄存器,使物理地址到真实 DRAM 坐标的映射发生变化,从而绕过位于更高层的内核、IOMMU、SMM、PSP、微码或固件内存隔离机制。项目核心思想是:安全边界通常基于“物理地址”建立,但 DRAM 控制器在更底层还会把物理地址转换为通道、rank、bank、row、column 等 DRAM 坐标;如果该转换可被运行时重配置,则受保护内存区域可能被重新映射到普通可访问地址空间中。该仓库更像是硬件安全研究 PoC/论文式代码,而不是通用软件库。

适用领域 硬件安全 / CPU 微架构安全 / DRAM 控制器研究 / 固件安全 / AMD 平台安全 / 内存隔离绕过研究 / 系统管理模式 SMM 安全 / 平台安全处理器 PSP 研究 / 逆向工程 / 漏洞研究 PoC
配置难度 极高。该项目需要硬件安全、CPU 微架构、x86 内存管理、DRAM 控制器、固件安全、C/汇编、内核权限模型和线性代数等多方面知识。对普通应用开发者不友好,更适合有底层安全研究经验并具备专用实验硬件的人员。
商业价值 对一般业务开发的直接价值较低,但对 CPU/服务器厂商、固件供应商、云计算平台、安全实验室和高校研究团队具有较高战略价值。它可以帮助评估硬件信任边界、固件保护机制和内存隔离假设是否可靠,也可用于推动 BIOS/UEFI 锁定策略、硬件寄存器访问控制、云主机硬件安全基线和下一代平台安全设计的改进。
01

技术亮点

  • 研究视角非常底层,聚焦在传统操作系统安全模型之下的 DRAM 控制器地址转换层。
  • 提出了一个重要安全观察:高层隔离机制保护的是物理地址范围,但 DRAM 控制器仍可能在更底层改变真实落点。
  • README 对虚拟地址到 DRAM 坐标的完整路径有非常详尽的解释,适合作为学习材料。
  • 项目展示了 AMD Family 16h 上文档化但不可锁定的 DRAM 控制器寄存器可能带来的安全影响。
  • 使用 GF(2) 线性映射理解和重建 DRAM scrambling,具有较高研究价值。
  • 覆盖 PSP、SMM、C6 DRAM、微码等多个传统上难以观察或受保护的区域,研究范围广。
  • MIT 许可证,便于学术研究、复现和二次分析。
02

目标用户

  • 硬件安全研究员
  • CPU/SoC 安全工程师
  • 固件与 BIOS/UEFI 安全研究人员
  • 操作系统内核开发者
  • 云基础设施安全团队
  • 高校或实验室中的体系结构安全研究人员
  • 对 AMD Family 16h 平台有实机环境的研究者
03

配置要求

  • 硬件:主要面向 AMD Family 16h CPU;README 提到 17h 及之后代际的相关寄存器文档不再公开,兼容性不确定。
  • 权限:通常需要极高权限,例如 root、内核级访问、物理内存/MMIO 访问能力,具体取决于代码实现。
  • 系统环境:需要允许访问底层硬件寄存器、物理地址或 MMIO 区域;现代内核安全配置可能会阻止此类访问。
  • 平台状态:BIOS/UEFI、芯片组、内存布局、DIMM 配置、通道交织、rank/bank 映射都会影响实验结果。
  • 安全设置:IOMMU、内核 lockdown、Secure Boot、虚拟化环境、内存加密或固件锁定机制可能导致实验失败或行为不同。
  • 实验条件:建议串口日志、外部调试、可恢复启动介质、完整磁盘备份和可接受宕机的测试平台。
  • 知识要求:需要理解 x86 内存层级、页表、缓存一致性、MMIO、DRAM 地址映射、GF(2) 线性代数和固件安全。
04

适用场景

  • 研究 DRAM 控制器地址转换、bank swizzle、interleave hash 等底层机制
  • 验证平台受保护内存区域是否依赖可被绕过的物理地址隔离假设
  • 分析 AMD Family 16h 及相近平台中 DRAM 地址映射寄存器的安全影响
  • 辅助理解 SMM、PSP、C6 DRAM、微码等受保护区域与内存控制器之间的关系
  • 作为硬件安全课程或研究论文的实验参考
  • 帮助固件/平台厂商评估是否需要锁定或隐藏内存控制器相关寄存器
  • 对比不同 CPU 代际在 DRAM 控制器可配置性与安全边界上的差异
05

部署与配置

  • 准备受支持的测试硬件,项目 README 明确说明主要开发和测试目标是 AMD Family 16h CPU。
  • 在隔离的实验环境中使用,不建议在生产机器、个人主力机或含有重要数据的系统上运行。
  • 安装 C 编译工具链,例如 gcc/clang、make、binutils 以及必要的内核头文件或系统开发包。
  • 克隆仓库:git clone https://github.com/xoreaxeaxeax/skitter-creek-bath-salts.git
  • 进入项目目录后查看 README、源码和 Makefile,确认具体构建目标、权限要求和平台检测逻辑。
  • 根据仓库提供的构建脚本执行编译,通常 C 项目会使用 make 或类似方式构建。
  • 在运行前完整备份系统,并确保可以通过断电、外部介质或调试接口恢复系统。
  • 仅在拥有授权的本地硬件上进行实验;不要在云主机、公司生产设备或第三方设备上尝试。
06

风险与注意事项

  • 极高风险:错误使用可能导致系统立即崩溃、数据损坏、文件系统损坏或硬件状态异常。
  • 可能绕过平台安全边界,涉及读取受保护内存区域,具有明显双用途和潜在攻击价值。
  • 不适合普通开发者、业务系统或生产环境运行。
  • 对具体 CPU、BIOS、内存拓扑和寄存器布局高度敏感,跨平台复现难度大。
  • 现代平台可能不兼容或因寄存器隐藏、锁定、安全机制增强而无法工作。
  • 运行过程可能触发不可预期的固件、SMM、PSP 或内核行为,调试成本很高。
  • 在未经授权的设备上使用可能违反法律、公司安全政策或云服务条款。

历史记录

热榜历史快照

2026-08-15 第7名 新收录 · github_search
2026-08-14 第27名 新收录 · github_search