苹果A12/A13芯片曝出BootROM硬件漏洞 usbliter8无法通过软件修复
6月19日消息,安全研究机构Paradigm Shift于昨日(6月18日)发布博文,披露了一个重大发现:他们在苹果A12与A13芯片中检测到一处BootROM漏洞,并将其命名为usbliter8。值得注意的是,该漏洞属于硬件层级缺陷,无法通过常规软件更新进行修复。

那么,哪些设备会受到影响?答案是所有搭载A12和A13芯片的苹果设备,涵盖iPhone XS系列、iPhone XR、iPhone 11全系列,以及采用S4和S5芯片的iPad与Apple Watch。具体型号清单如下:
- 11英寸iPad Pro(第一代)
- 11英寸iPad Pro(第二代)
- 12.9英寸iPad Pro(第三代)
- 12.9英寸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控制器硬件缺陷,再结合固件配置上的弱点,使攻击者得以完全攻陷应用处理器的启动链。听起来令人不安,但别担心,我们来逐步拆解其原理。
核心机制在于USB控制器接收USB Setup包时采用的环形DMA缓冲机制。每当收到一个8字节的Setup包,DMA地址指针便会递增8字节。然而当收到第四个包时,控制器试图将指针回退24字节以实现环形复位——问题出现了:控制器也接受小于8字节的包(但始终按4字节对齐存储),导致指针实际递增量(写入大小)与固定递减量(24字节)无法对齐,从而产生一个12字节步进的缓冲欠载(buffer underflow)原语。这个原语正是漏洞的起点。
在A12芯片上,DWC2 USB控制器的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及以上芯片的设备以确保安全。如果手中仍在使用iPhone XS或iPhone 11系列,或许需要留意后续的硬件更新动态。
附上参考地址
Introducing usbliter8
