Wcześniejszy exploit checkm8 (2019) obejmował chipy A5–A11; usbliter8 rozszerza tę samą klasę ataku na kolejną generację . Co ciekawe, A11 nie jest podatny, ponieważ jego sterownik USB ręcznie resetuje wskaźnik DMA po każdym pakiecie
. Chipy A14 i nowsze są bezpieczne, ponieważ poprawnie konfigurują ochronę pamięci USB DART w SecureROM
.
Niezgodność wskaźnika w buforze cyklicznym: Kontroler przechowuje do trzech kolejnych pakietów USB Setup w buforze DMA. Po każdym zapisie zwiększa wskaźnik sprzętowy o rozmiar danych. Po trzecim pakiecie resetuje go, odejmując stałe 24 bajty .
Sztuczka z małym pakietem: Kontroler akceptuje pakiety mniejsze niż standardowe 8 bajtów, ale zawsze przechowuje je w porcjach po 4 bajty. Gdy odebrany zostanie mały pakiet, przyrost wskaźnika (rzeczywista liczba zapisanych danych) nie zgadza się ze stałym odejmowaniem 24 bajtów, co powoduje niedomiar bufora o 12 bajtów – wskaźnik cofa się w pamięci .
Nadpisanie pamięci: Pozwala to atakującemu nadpisać obszary SRAM, które powinny być niedostępne podczas uruchamiania, w tym dane stosu i metadane sterty .
Wykonanie kodu: Na A12 atakujący nadpisuje zapisany rejestr link (LR) na stosie zadania USB, aby przejąć kontrolę nad licznikiem programu (PC). Na A13 ochrona PAC (Pointer Authentication Codes) komplikuje atak, wymagając wieloetapowej techniki omijającej sumy kontrolne sterty i liczniki panic .
BootROM (SecureROM) to pierwszy kod uruchamiany przez chip po włączeniu zasilania. Jest wypalany w pamięci ROM podczas produkcji chipa i pozostaje niezmienny przez cały okres życia urządzenia . Ponieważ przyczyną jest błąd sprzętowy w kontrolerze USB, a nie błąd programowy, Apple nie jest w stanie załatać go aktualizacją firmware'u lub systemu
. Jedynym skutecznym rozwiązaniem jest migracja do nowszego sprzętu (A14 lub nowsze)
.
Comments
0 comments