首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

面条化的 DRAM

2026-08-14 1 阅读 约6分钟阅读 matt_d
分享:
字号:
通过 DRAM 加扰解锁 CPU 上的所有内容 — PSP、C6、微码、SMM 以及规格中未提及的任何其他内容。 &x == &x 。通常。戳一下 DRAM 控制器,地址就可以放置在内存中您想要的任何位置。 Skitter-creek-bath-salts 修改内存层次结构的底层以重新连接物理 DRAM 地址转换。这会扰乱平台内存,暴露 DRAM 的受保护区域——甚至内核都看不到的剥离区域。当地址转换被破坏时,基于它们构建的安全原语也会被破坏,我们就解锁了一切。在 AMD 系列 16h CPU 上进行开发和测试,这是最后一代,其数据表记录了 DRAM 控制器的转换寄存器,并表明它们无法被锁定。 17 小时及之后,只需忽略此信息即可。 *p 的历程在各代和架构中都是相似的,底层转换甚至扩展到 ARM、RISC-V 及更高版本; Skitter-creek-bath-salts 只向我们展示了如何开始。下来还有很长的路要走。记忆是建立在抽象层之上的,如此之深以至于几乎变得荒谬。当您的代码取消引用 *p 时,它似乎访问 p 处的 DRAM。它不是—— p 是虚拟地址,在触及 DRAM 的单个位之前,它必须经受以下挑战: ── CPU 核心 / MMU ────────────────────────────────────────────── ┌─ VA ← 来自加载/存储的 64 位虚拟地址 │ └> 规范形式检查 ────────────────────┐ ← 位[63:48] 从第 47 位开始符号扩展 ┌─ 段基添加 <────────────────────────┘ ← FS.base / GS.base (MSR_FS_BASE, MSR_GS_BASE) │ └> TLB 探测 ──────────────────────────────┐ ← 由 PCID(主机)/VPID(客户)标记命中 → 物理地址 k │ miss → 使用硬件页面遍历器 │ ┌─ 页面遍历(来自 CR3)<────────────────────┘ ← 仅在 TLB 未命中时遍历 │ PML5[VA 56:48] ← 仅当 CR4.LA57 │ PML4[VA 47:39] │ PDPT[VA 38:30] ← 可能有 1 GiB 叶 │ PD [VA 29:21] ← 可能有 2 MiB 叶 │ PT [VA 20:12] │ PTE ← R/W · U/S · NX · A/D · PAT · PCD · PWT · G │ └> 每级检查 ────────────────────────┐ ← 在每个级别的步行权限 (U/S) 上进行评估 │ ← CPL 与 PTE.U/S 写入(读/写) │ ← + CR0.WP 执行 (NX) │ ← EFER.NXE SMEP / SMAP │ ← CR4.SMEP · CR4.SMAP · EFLAGS.AC 保护密钥 │ ← PKRU (用户) · IA32_PKRS (管理员) ┌─ A/D 位更新 <─────────────────────锁定──┘ ← PTE 上的 RMW │ └> if guest: EPT / NPT re-walk ─────────────┐ ← 上面的每个 guest-PA 都重新行走 EPT-PML4 → EPT-PDPT → EPT-PD → EPT-PT │ ← + EPT 内存类型覆盖 ⇒ 每个单个 guest 行走 ~5× 行走 │ ┌─ TLB 击落 IPI <─────────────────────┘ ← invlpg 广播到对等 vCPU │ │ ── IOMMU(芯片组/I/O 结构) ────────────────────────────── │ └> 如果设备启动,IOMMU 页面遍历 ──────┐ ← VT-d / AMD-Vi:设备 ID → 域 → 表 │ ┌── **物理地址 k** <────────────────┘ │ │ ── CPU 核心 / MMU — 内存类型解析 ────────────────────── │ └> MTRR 范围匹配 ──────────────────────┐ ← IA32_MTRR_DEF_TYPE + 固定/可变 MTRR ┌─ PAT 条目选择 <───────────────────────┘ ← IA32_PAT[ PTE.PAT:PCD:PWT ] │ └> 有效内存类型 ────────────────────┐ ← { WB, WT, WC, WP, UC-, UC } │ ── CPU 非核心 — 缓存和一致性 ──────────────────────────────── │ ┌─ L1-D 探针<──────────────────────────────┘ ← VIPT,每核 │ └> L2 探测 ──────────────────────────────┐ ← 每核 / 每 CCX ┌─ LLC 探测 + 目录查询 <────────────┘ ← 共享、切片 │ └> 窥探/一致性──────────────────────┐ ← MESI / MOESI 套接字内广播 │ ← 套接字间向对等核心广播 │ ← QPI · UPI · Infinity Fabric · CXL.cache 主节点目录响应 │ ← 数据 |干预 |中止 │ ── 系统数据结构/互连 ──────────────────────────── │ ┌─ 如果 MMIO 范围或低于 4 GiB MMIO 孔 <──────┘ ← uncore/data Fabric 发布/非发布 txn │ → 设备 BAR;完成 │ └> else DRAM 绑定:数据结构 / 网状结构 ────────┐ ← AMD DF · Intel 网状或环非核心 │ ┏──── MCT / IMC(内存控制器) ──────────────────────────── W ┃ ┌─ DRAM 孔重新映射 <──────────────────────┘ ← 上面的高内存重新映射TOM E ┃ │ ┃ └> 内存区域排除重映射 ──────────────┐ ← 保留/受保护范围 ┃ ┌─ 通道交错哈希 <────────────────┘ ← 所选 PA 位的异或 → 通道 A ┃ │ R ┃ └> 等级交错哈希 ────────────────────┐ ← 异或选定的 PA 位 → 等级 E ┃ ┌─ 组交错哈希 <────────────────────┘ ← 所选 PA 位的异或 → 组 ┃ │ ┃ └> 组混合/异或扰乱 ───────────────┐ ← 供应商和 BIOS 可配置 H ┃ ┌─ 片选标准化 (DCT) <────────────┘ ← 每列 CS 线 E ┃ │ 列 → CS 映射 R ┃ │ E ┃ └> 子通道选择 ──────────────────────┐ ← 仅限 DDR5 / LPDDR5 ┗──── │ │
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱