6 月 19 日消息,安全公司 Paradigm Shift 昨日(6 月 18 日)发布博文,宣布在苹果 A12 和 A13 芯片上发现 BootROM 漏洞,将其命名为 usbliter8。
在受影响机型方面,该漏洞影响搭载 A12 和 A13 芯片的设备,涵盖 iPhone XS、iPhone XS Max、iPhone XR 和 iPhone 11 系列,此外搭载 S4 和 S5 芯片的多款 iPad 和 Apple Watch 设备也受到影响:
11-inch iPad Pro (第一代)
11-inch iPad Pro (第二代)
12.9-inch iPad Pro (第三代)
12.9-inch iPad Pro (第四代)
Apple Watch SE (第一代)
Apple Watch Series 4
Apple Watch Series 5
iPad (第 9 代)
iPad (第 8 代)
iPad Air (第 3 代)
iPad mini (第 5 代)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone SE (第 2 代)
iPhone XR
iPhone XS
iPhone XS Max
根据博文内容,该漏洞利用苹果 A12 和 A13 芯片内置的 DWC2 USB 控制器硬件 Bug 与特定固件配置缺陷,实现应用处理器启动链的完全攻陷。
该控制器在接收 USB Setup 包时采用环形 DMA 缓冲机制:每接收一个 8 字节 Setup 包,DMA 地址指针递增 8 字节;但接收第四个包时,控制器会尝试将指针回退 24 字节,从而实现环形复位。
然而控制器也接受小于 8 字节的包(但始终按 4 字节对齐存储),导致指针递增量(实际写入大小)与固定递减量(24 字节)不匹配,形成 12 字节步进的缓冲欠载(buffer underflow)原语(primitive)。
在 A12 上 ds,dUSB 控制器的 DMA 缓冲区位于堆中,紧邻 USB 任务栈。通过欠载原语覆盖栈上保存的 LR 寄存器,当调度器切换回 USB 任务时,即可劫持 PC。
A13 则因引入 PAC(指针认证)和堆元数据校验而复杂化。攻击者需分多步绕过:
首先覆盖 DART(设备地址重映射表)相关数据结构,利用 DART 清理例程中的零写入原语清空全局 DART 指针,避免堆校验崩溃;
随后利用 MMIO 寄存器写入 0xF,覆盖全局 panic 计数器,使后续 panic 进入无限循环而非重启;
再精确控制 DMA 写入时机,在 USB 任务运行时覆写其任务结构中的临界区深度字段,触发带 IRQ 的 panic 进入无限循环;
最后在无限循环中继续 DMA 写操作,覆盖 BSS 段中的 USB IRQ 处理函数指针,获得完全 PC 控制。
获得代码执行后,攻击者利用 SecureROM 中罕见的 EL1 模式切换点(SVC 0 指令)。A12 上通过 ROP 链将 DMA 目标地址设为 boot trampoline 区域(只读执行区,但 DMA 可写),写入 shellcode 后跳转至 EL1 权限执行。
尽管该漏洞无法通过软件修复,但利用条件苛刻,需要物理接触设备,且不会直接威胁安全隔区处理器。苹果已收到通报,建议用户升级至 A14 及以上芯片设备以确保安全。