
一项名为usbliter8的新型BootROM漏洞影响搭载A12、S4/S5和A13芯片的苹果设备。该漏洞利用Synopsys DWC2 USB控制器中的硬件级缺陷与固件配置缺陷形成攻击链,由于BootROM代码不可更改的特性,导致无法通过软件补丁修复,最终实现应用处理器完整启动链的攻陷。
Paradigm Shift研究人员指出,该漏洞源于DWC2 USB控制器处理连续USB Setup数据包的方式。控制器在重置DMA基地址(存储于DOEPDMA寄存器)前,会在内存中存储最多三个Setup数据包,其工作机制类似环形缓冲区。
关键缺陷在于:每次写入后,控制器会按写入数据大小递增DOEPDMA值,但重置操作始终固定递减24字节。由于控制器还接受以4字节为单位的较小数据包,这种指针运算机制会失效。变量递增与固定递减之间的不匹配导致每12字节步进产生一次缓冲区下溢,使得攻击者可控制写入目标缓冲区之外的内存区域。
在A12和A13芯片上,SecureROM中的USB DART(设备地址解析表)配置为旁路模式,意味着没有IOMMU屏障阻止DMA覆盖任意SRAM数据。A14及后续芯片正确配置了DART,使得该漏洞无法在新硬件上利用。
A12与A13芯片的漏洞利用差异
在A12和S4/S5芯片上,漏洞利用相对直接。DMA缓冲区与堆上的USB任务栈相邻,攻击者通过破坏保存的链接寄存器(LR),在调度器上下文切换期间获得程序计数器(PC)控制权。随后通过精简的ROP链将DMA写入重定向至通常EL0不可写的启动跳板区,最终跳转至SecureROM的EL1转换例程,以完全权限执行攻击者shellcode。

A13芯片引入指针验证(PAC)机制,使直接破坏LR变得复杂。研究人员开发出多阶段技术:通过可控覆盖DART堆元数据、中和堆校验和保护机制,以及用0xF写入原语覆盖全局崩溃计数器来抑制崩溃重启。最终通过从攻击者控制内存加载函数指针的gadget绕过PAC------由于固件中仅启用IB密钥,这一疏忽成为致命弱点。
攻击实现与持久化
获得EL1代码执行能力后,攻击利用将自定义USB请求处理程序注入未使用的启动跳板空间,修补USB序列号加入"PWND"标识,并恢复损坏的堆分配以维持设备稳定性。
在A13芯片上,由于内存破坏程度较深,需要完整重启SecureROM------研究人员将ROM复制到SRAM,通过自定义MMU转换表重新映射,并挂钩ROM页表项生成以保持重启过程中的地址空间一致性。自定义处理程序支持两项特权操作:SoC降级(临时降低生产模式)和无签名iBoot启动(绕过原始iBoot镜像的所有签名验证),这实际上废除了苹果的安全启动链。
受影响设备与缓解措施
确认存在漏洞的芯片包括:
-
苹果A12(iPhone XS、XR,2018款iPad Pro)
-
苹果S4/S5(Apple Watch Series 4/5)
-
苹果A13(iPhone 11系列)
由于BootROM漏洞存在于不可更改的硅片中,任何软件或固件更新都无法修复。迁移至A14或更新硬件是唯一有效缓解方案。研究人员指出,虽然苹果的安全隔离处理器(SEP)提供了额外安全边界,但usbliter8为间接攻击安全隔离区开辟了更广泛途径。
Paradigm Shift在发布前已与苹果产品安全部门协调披露。完整PoC利用代码已公开在其研究仓库中。