← На главную

Исследователи нашли неустранимую уязвимость usbliter8 в BootROM Apple A12/A13/S4/S5

18.06.2026 14:23 · hackernews

Исследователи из Paradigm Shift опубликовали подробный разбор уязвимости usbliter8 — аппаратной ошибки в BootROM процессоров Apple. Уязвимость затрагивает SoC Apple A12, A13, S4 и S5. Эксплойт позволяет получить полный контроль над загрузочной цепочкой устройства.

Проблема кроется в USB-контроллере DWC2 от Synopsys. Он хранит в памяти до трёх Setup-пакетов подряд. При получении четвёртого DMA-адрес сбрасывается на начальную позицию (кольцевой буфер). Контроллер уменьшает адрес на 24 байта, но из-за того, что он принимает пакеты меньшего размера и увеличивает указатель на другую величину, возникает сдвиг на 12 байт при каждой перезаписи. Это даёт примитив записи за границы буфера.

На A12 всё относительно просто: буфер DMA лежит рядом со стеком USB-задачи. Перезаписью сохранённого LR в стеке исследователи получают контроль над PC. Дальше — классический ROP.

На A13 ситуация сложнее из-за PAC (Pointer Authentication). PAC защищает LR на стеке, поэтому напрямую его перезаписать нельзя. Исследователи обходят защиту в несколько шагов: портят данные DART в куче, отключают счётчик паники, синхронизируют DMA-записи с работающей задачей, перехватывают IRQ-обработчик. В итоге они находят gadget, который позволяет прыгнуть на произвольный адрес без корректной аутентификации.

После получения контроля на A12 и A13 используется одна и та же техника: DMA-запись в boot trampoline — область, предназначенную только для исполнения, но доступную для DMA. Затем выполнение переводится в привилегированный режим EL1.

В пост-эксплуатации исследователи подменяют обработчик USB-запросов в прошивке DFU. Это позволяет загружать неподписанный iBoot и временно понижать production mode чипа. Интересная деталь: прыжок на загрузку iBoot нельзя делать из контекста USB-задачи, так как он выключает USB. Пришлось подменять адрес возврата основной задачи.

На A10 и A11 уязвимость не работает — там драйвер USB вручную сбрасывает DMA-адрес. На A14 и новее DART настроен корректно, что блокирует запись в SRAM. Поскольку баг живёт в неизменяемом BootROM, единственное эффективное решение для пользователей — миграция на новое железо.

Исследователи сообщили о проблеме в Apple Product Security и скоординировали публикацию с компанией.

Читать оригинал →