El exploit anterior de este tipo, checkm8 (2019), cubría desde el A5 hasta el A11. Ahora usbliter8 extiende el problema a la siguiente generación . El chip A11 no es vulnerable porque su driver USB reinicia manualmente el puntero DMA tras cada paquete
. Los chips A14 y posteriores están a salvo porque configuran correctamente el DART (protección de memoria USB) en el SecureROM
.
El fallo reside en el controlador USB Synopsys DWC2 integrado en el chip . El mecanismo, en detalle, es el siguiente:
Desajuste del puntero del búfer circular: El controlador almacena hasta tres paquetes USB Setup consecutivos en un búfer DMA. Tras cada escritura, incrementa un puntero de hardware según el tamaño de los datos. Después del tercer paquete, lo reinicia decrementándolo en 24 bytes fijos .
Truco del paquete pequeño: El controlador acepta paquetes de menos de 8 bytes, pero los almacena siempre en fragmentos alineados a 4 bytes. Con un paquete muy pequeño, el incremento del puntero (datos reales escritos) no coincide con el decremento fijo de 24 bytes, generando un desbordamiento negativo (buffer underflow) de 12 bytes: el puntero retrocede por la memoria .
Sobrescritura de memoria: Esto permite al atacante sobrescribir regiones de SRAM que deberían ser inaccesibles durante el arranque, incluyendo datos de pila y metadatos del montón dinámico .
Ejecución de código: En el A12, el atacante sobrescribe un registro de enlace (LR) guardado en la pila de la tarea USB para obtener el control directo del contador de programa (PC). En el A13, la presencia de códigos de autenticación de punteros (PAC) complica el ataque, requiriendo una técnica de varios pasos que también sortea las sumas de verificación del montón y los contadores de pánico .
Una vez explotado, el exploit permite reducir temporalmente las restricciones de seguridad del dispositivo y arrancar software no firmado. Como señal de éxito, el puerto USB del dispositivo se marca con el identificador "PWND" en el sistema .
El BootROM (SecureROM) es el primer código que ejecuta el chip al encenderse. Está grabado en una memoria de solo lectura (ROM) durante la fabricación del chip y es inmutable después de que el dispositivo sale de fábrica . Como la causa raíz es un defecto de hardware en el controlador USB — y no un error de software — Apple no puede corregirlo con una actualización de firmware o del sistema operativo
. La única mitigación efectiva es migrar a hardware más reciente (A14 o posterior)
.
Comments
0 comments