Уязвимость проявляется в устройствах с процессорами A12 и A13, а также Apple Watch на чипах S4 и S5 .
iPhone (A12): iPhone XS, XS Max, XR, iPhone SE (2-го поколения) .
iPhone (A13): iPhone 11, 11 Pro, 11 Pro Max .
Apple Watch: модели с чипами S4 и S5 (Series 4 и Series 5) .
Стоит отметить, что популярный ранее эксплойт checkm8 (2019 год) охватывал устройства с чипами от A5 до A11, а usbliter8 расширяет этот класс атак на следующие поколения . Чипы A11 не уязвимы: их USB-драйвер вручную сбрасывает DMA-указатель после каждого пакета
. A14 и более новые чипы также защищены, так как в их SecureROM корректно настроена защита памяти DART
.
Ошибка кроется в USB-контроллере Synopsys DWC2, интегрированном в чип Apple . Техническая цепочка выглядит так:
Несоответствие указателей в кольцевом буфере: Контроллер хранит до трёх последовательных USB Setup-пакетов в DMA-буфере. После каждой записи он увеличивает аппаратный указатель на размер записанных данных. После третьего пакета указатель сбрасывается на фиксированные 24 байта .
Уловка с маленькими пакетами: Контроллер принимает пакеты размером меньше 8 байт, но всегда хранит их с выравниванием по 4 байтам. Когда поступает такой маленький пакет, приращение указателя (фактический объём данных) не совпадает с фиксированным уменьшением на 24 байта. Это создаёт переполнение буфера на 12 байт — указатель движется назад по памяти .
Перезапись памяти: Атакующий получает возможность записывать данные в области SRAM, которые во время загрузки должны быть недоступны, включая стековые данные и метаданные кучи .
Выполнение кода: На A12 атакующий перезаписывает сохранённый регистр LR (link register) в стеке USB-задачи, чтобы перехватить счётчик команд (PC). На A13 защита PAC (Pointer Authentication Codes) усложняет атаку, требуя многошаговой техники, которая также обходит контрольные суммы кучи и счётчики паник .
BootROM (SecureROM) — это самая первая программа, которую чип выполняет при включении. Она вшита в постоянное запоминающее устройство на этапе производства и становится неизменяемой после выхода устройства с завода . Первопричина — аппаратная ошибка в USB-контроллере, а не программный баг. Apple не может выпустить патч в виде обновления iOS
. Единственный способ полностью защититься — перейти на устройства с чипами A14 или новее
.
Comments
0 comments