iBoot SMMU 绕过与 Kernelcache 结构体伪造
摘要 Apple Silicon 的安全启动链从 Boot ROM 到 iBoot 再到 Kernelcache,层层验证,构筑了封闭生态中最坚固的信任根基。然而,iBoot 阶段的系统内存管理单元初始化和设备树解析,依赖一套早于 XNU 内核建立的内存映射机制。攻击者若能在 iBoot 执行阶段污染设备树中的 DART 节点,便可在 SMMU 页表创建之前植入虚假的 IOMMU 映射,使内核在不知情的情况下使用被篡改的 DMA 保护配置。 Apple Silicon 的启动链与信任模型 从 Boot ROM 到 Kernelcache 的信任传递 Apple Silicon Mac 的启动过程分为四个严格校验的阶段: Boot ROM:芯片出厂固化代码,不可修改。验证下一阶段的签名(iBoot),仅在 DFU 模式下可通过外部刷新进行恢复。这是信任的物理根基,也是 checkm8 等永久性漏洞的所在层。 iBoot:Apple 的第二阶段引导加载器,负责初始化硬件(包括 SMMU、内存控制器、PCIe 根复合体),解析设备树并选择启动内核。iBoot 本身由 Boot ROM 验证签名。 Kernelcache:XNU 内核及其扩展的预链接映像,由 iBoot 验证签名后解压加载。内核启动后依赖 iBoot…