usbliter8: A12/A13 SecureROM漏洞利用

Lobsters Hottest 工具

摘要

usbliter8是一种针对苹果A12和A13 SoC的tethered bootrom漏洞利用,使用基于RP2350的微控制器板,通过利用USB控制器漏洞来获取底层设备访问权限。

<p><a href="https://lobste.rs/s/fs8itz/usbliter8_a12_a13_securerom_exploit">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/06/26 08:06

prdgmshift/usbliter8

来源:https://github.com/prdgmshift/usbliter8

usbliter8

针对 Apple A12、S4/S5 及 A13 SoC 的绑定启动 ROM 漏洞利用(A12X/Z 理论上也可支持,但尚未实现)。

漏洞及利用技术报告

详见我们的博客文章 (https://ps.tc/pages/blog-usbliter8.html)。

使用方法

硬件要求

该漏洞滥用 USB 控制器的一个非常底层的缺陷,这意味着默认的 Mac/PC USB 协议栈通常无法触及它。因此,我们改用基于 RP2350 的树莓派微控制器板卡。

我们使用的板卡是 Waveshare RP2350 USB-A (https://www.waveshare.com/wiki/RP2350-USB-A),配合 Lightning 转 USB-A 线缆,并可选移除 R13 电阻 (https://qsantos.fr/2025/11/21/fixing-the-rp2350-usb-a-not-working-as-usb-host/)。

也可以使用其他基于 RP2350 的板卡,只需剪断一根 Lightning 线缆并直接焊接到相应的引脚上。

通常 GPIO12 和 13 分别用于 D+ 和 D- 信号,但可配置。不要使用 USB-C 线缆,因为它们的引脚定义通常差异很大。并且尽量保持剩余线缆(带 Lightning 接头的一端)相对短一些。

以下是我们测试过该漏洞的板卡列表:

  • Waveshare RP2350 USB-A
  • Waveshare RP2350 Zero
  • Pimoroni TINY2350
  • Raspberry Pi Pico 2

理论上 RP2040 也可使用,但目前不太稳定,且 Apple A13 SoC 完全无法工作。

刷写固件

上述板卡的已编译 UF2 镜像可在 Releases 部分获取。可以通过 RP2350 启动 ROM 的大容量存储协议或 picotool (https://github.com/raspberrypi/picotool) 进行刷写。

如果你的板卡不在支持列表中,你可以创建自己的板卡配置文件(在 /boards 文件夹中),并参考本 README 后面的构建说明。

执行漏洞利用

  1. 进入 DFU 模式 (https://theapplewiki.com/wiki/DFU_Mode#A11_and_newer_devices_without_clickable_home_buttons_(iPhone_8_and_above,_iPad_Pro_2018_and_above,_iPad_Mini_2021,_iPad_Air_2020_and_above,_iPad_10th_generation))。在设备连接至你的 Mac/PC 时执行此操作。

    • 不要通过破坏 LLB 进入 DFU——这样无法工作
  2. 从 Mac/PC 上拔下设备,再重新插入 RP2350 板卡

  3. 几秒钟后,漏洞利用完成

有两种方式可以观察进程:

  1. RP2350 显示为虚拟 COM 端口——漏洞利用日志会打印到那里

  2. 通过板载 LED

如果 LED 是 RGB 类型:

  1. 橙色闪烁 - RP2350 正在启动(需约 2 秒)
  2. 橙色常亮 - 空闲,准备利用
  3. 蓝色 - 利用进行中
  4. 绿色 - 利用成功!
  5. 红色 - 利用失败

如果 LED 是单色类型:

  1. 慢速闪烁(200ms 周期) - RP2350 正在启动(需约 2 秒)
  2. 呼吸灯效果 - 空闲,准备利用
  3. 快速闪烁(100ms) - 利用进行中
  4. 常亮 - 利用成功!
  5. 熄灭 - 利用失败

漏洞利用运行时间约 0.7 - 1.2 秒。无论成功还是失败,你都需要重启微控制器板卡——通过板载按钮、picotool 或重新插拔电源。

利用之后

将设备重新插回你的 Mac/PC。

在 USB 序列号末尾你应该能看到 PWND 字符串,例如:

CPID:8020 CPRV:11 CPFM:03 SCEP:01 BDID:0E ECID:XXXXXXXXXXXXXXXX IBFL:3C SRTG:[iBoot-3865.0.0.4.7] PWND:[usbliter8]

仓库中有一个 Python 控制工具 (usbliter8ctl),允许你将生产模式降级或启动原始 iBoot(“原始”指已解密且不含任何容器)。

该控制工具依赖 pyusb,可从 pip 获取。

`` ➜ usbliter8 git:(main) ✗ ./usbliter8ctl usage: usbliter8ctl [-h] {boot,demote} …

Love is Control

positional arguments: {boot,demote} boot boot raw iBoot demote demote production mode

options: -h, –help show this help message and exit ``

构建

如果你想自行编译固件,需要获取 CMake、Pico SDK (https://github.com/raspberrypi/pico-sdk)、picotool (https://github.com/raspberrypi/picotool)(依赖 libusb)以及 ARM 工具链 (https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads)。

由于漏洞利用本质上是竞态敏感的,代码改动(即使看似无关)可能会降低可靠性。我们认为这是因为 RP2350 从外部 QSPI flash 执行代码。实际指令会进入一个小缓存,缓存驱逐会破坏时序,进而导致整个利用失效。

以下是我们使用的 Pico SDK 和 ARM 工具链的确切版本:

  • Pico SDK - SDK Release 2.2.0 (commit a1438dff1d38bd9c65dbd693f0e5db4b9ae91779)
  • ARM 工具链 - 15.2.Rel1

cd usbliter8 cmake -S . -B build -DPICO_BOARD=$PICO_BOARD -DPICO_SDK_PATH=$PICO_SDK_PATH -DPICO_TOOLCHAIN_PATH=$PICO_TOOLCHAIN_PATH cmake --build build

$PICO_SDK_PATH$PICO_TOOLCHAIN_PATH 替换为你的路径。$PICO_BOARD 为以下之一:

  • waveshare_rp2350_usb_a
  • waveshare_rp2350_zero
  • pimoroni_tiny2350
  • pico2

尽管不推荐使用 RP2040,但你仍然可以尝试:

  • adafruit_feather_rp2040
  • pico

你也可以在 /board 目录中添加自己的板卡定义文件。板卡名称必须与 Pico SDK 中的板卡名称一致。

或者使用 “unknown” 板卡(对于不支持的板卡默认选择)。它使用 GPIO12/13 作为 USB 数据信号,并禁用 LED。

作者

  • Paradigm Shift 的 @__gsch (https://x.com/__gsch) —— 漏洞发现与利用
  • Paradigm Shift 的 @[email protected] (https://infosec.exchange/@hdesk/) —— 漏洞利用
  • Paradigm Shift 的 REDACTED —— 利用后阶段与开发

致谢

  • sekigon-gonnoc —— 提供了 PIO USB 库 (https://github.com/sekigon-gonnoc/Pico-PIO-USB)

相似文章

usbliter8 - Apple A12/A13 bootROM漏洞利用

Lobsters Hottest

本文详细介绍了苹果A12/A13 SoC中一种新颖的bootROM漏洞,该漏洞利用USB控制器中的硬件缺陷和配置缺陷,从而破坏了启动链。文中还提供了一个概念验证。

objdump -g 中的任意代码执行

Lobsters Hottest

objdump -g 中存在一个安全漏洞,由于 FR30 重定位处理程序缺少边界检查,通过精心构造的 FR30 目标文件可实现任意代码执行,单个漏洞利用即可绕过 ASLR 及其他缓解措施。

Pixel 10 的零点击利用链

Hacker News Top

谷歌 Project Zero 发布了针对 Pixel 10 的零点击利用链,利用 Dolby 漏洞和新 VPU 驱动缺陷实现 Android 根权限获取。