Tidigare offentliggjordes 'checkm8' (2019) som påverkade enheter med A5- till A11-chips (iPhone 4S till iPhone X) . usbliter8 utökar nu samma typ av attack till nästa generation
. A11 är inte sårbart eftersom USB-drivrutinen manuellt återställer DMA-pekaren efter varje datapaket
. A14 och nyare chips är också skyddade eftersom de konfigurerar USB DART (minnesskydd) korrekt i SecureROM
.
Problemet ligger i den Synopsys DWC2 USB-kontroller som är inbyggd i chippet . Här är den tekniska kedjan:
Felaktig ringbuffer-pekare: Kontrollern lagrar upp till tre USB Setup-paket i en DMA-buffert. Efter varje skrivning ökar den en hårdvarupekare med datastorleken. Efter det tredje paketet minskas den med fasta 24 byte .
Knep med för små paket: Kontrollern accepterar paket som är mindre än standard 8 byte, men lagrar dem alltid i 4-byte-justerade bitar. När ett litet paket tas emot matchar inte pekarens ökning (faktisk datamängd) den fasta minskningen på 24 byte, vilket skapar en 12-byte buffertunderflöde – pekaren rör sig bakåt i minnet .
Minnesskrivning: Detta låter en angripare skriva över SRAM-områden som borde vara otillgängliga under uppstart, inklusive stackdata och heapmetadata .
Kodexekvering: På A12 kan angriparen skriva över ett sparat länkregister (LR) på USB-uppgiftens stack för att direkt ta kontroll över programräknaren (PC). På A13 kompliceras detta av PAC (Pointer Authentication Codes), vilket kräver en flerstegsmetod som även kringgår heap-kontrollsummor och panikräknare .
BootROM (SecureROM) är den allra första koden som chippet kör vid uppstart. Den är inbränd i skrivskyddat minne (ROM) vid chiptillverkningen och kan inte ändras efter att enheten lämnat fabriken . Eftersom grundorsaken är en hårdvarubug i USB-kontrollern – inte en programvarubug – kan Apple inte åtgärda den med en fastvaru- eller OS-uppdatering
. Den enda effektiva åtgärden är att byta till nyare hårdvara (A14 eller senare)
.
Comments
0 comments