Cadena de ataque de 'Operation Triangulation'
- Envía un archivo adjunto malicioso de iMessage para que una aplicación lo procese sin que el usuario lo note.
- Este adjunto aprovecha la vulnerabilidad de ejecución remota de código CVE-2023-41990 en la instrucción de fuente TrueType ADJUST, no documentada y exclusiva de Apple.
- Usa múltiples etapas escritas con programación orientada a retornos/saltos y el lenguaje de consultas NSExpression/NSPredicate para parchear el entorno de la biblioteca JavaScriptCore y ejecutar un exploit de escalamiento de privilegios escrito en JavaScript.
- El exploit en JavaScript está ofuscado para ser completamente ilegible y minimizar su tamaño. Aproximadamente 11,000 líneas de código están dedicadas principalmente al análisis y la manipulación de JavaScriptCore y de la memoria del kernel.
- Aprovecha la función de depuración DollarVM($vm) de JavaScriptCore para obtener desde el script la capacidad de manipular la memoria de JavaScriptCore y ejecutar funciones nativas de la API.
- Está diseñado para soportar tanto iPhone antiguos como nuevos, e incluye una evasión de Pointer Authentication Code (PAC) para explotar vulnerabilidades en los modelos más recientes.
- Aprovecha la vulnerabilidad de desbordamiento entero CVE-2023-32434 en las llamadas al sistema de mapeo de memoria de XNU (
mach_make_memory_entry y vm_map) para obtener acceso de lectura/escritura, a nivel de usuario, a toda la memoria física del dispositivo.
- Usa registros de memory-mapped I/O (MMIO) para evadir la Page Protection Layer (PPL). Esto fue mitigado como CVE-2023-38606.
- Después de explotar todas las vulnerabilidades, el exploit en JavaScript puede realizar cualquier acción deseada en el dispositivo y, en lugar de ejecutar spyware, inyecta un payload que inicia el proceso IMAgent y borra los rastros del exploit en el dispositivo, o ejecuta el proceso Safari en modo invisible para redirigirlo a una página web con una siguiente etapa.
- La página web contiene un script que verifica a la víctima y, si pasa la validación, recibe la siguiente etapa: el exploit de Safari.
- El exploit de Safari usa CVE-2023-32435 para ejecutar shellcode.
- El shellcode ejecuta otro exploit de kernel en formato de archivo de objeto Mach. Usa las mismas vulnerabilidades que CVE-2023-32434 y CVE-2023-38606. Es enorme en tamaño y funcionalidad, pero completamente distinto del exploit de kernel escrito en JavaScript. Aunque comparten las partes relacionadas, la mayor parte del código está dedicada al análisis y la manipulación de la memoria del kernel. Incluye varias utilidades de post-explotación, pero la mayoría no se usan.
- El exploit obtiene privilegios de root y ejecuta otra etapa que carga el spyware.
El misterio y la vulnerabilidad CVE-2023-38606
- Los modelos recientes de iPhone tienen protecciones de seguridad adicionales basadas en hardware para áreas sensibles de la memoria del kernel.
- Esta protección evita que un atacante tome control total del dispositivo incluso si logra leer y escribir en la memoria del kernel.
- El atacante evade esta protección de seguridad basada en hardware usando otra función de hardware del SoC diseñada por Apple.
- El atacante evade la protección de memoria basada en hardware escribiendo datos, la dirección de destino y un hash de los datos en registros de hardware desconocidos de un chip que el firmware no utiliza.
- Se cree que esta función de hardware desconocida probablemente fue pensada para depuración o pruebas por ingenieros de Apple o en fábrica, o que fue incluida por error.
Detalles técnicos
- Varios periféricos del SoC ofrecen registros de hardware especiales que la CPU puede usar para operar estos dispositivos.
- Estos registros de hardware están mapeados en memoria accesible por la CPU y se conocen como "memory-mapped I/O (MMIO)".
- En los productos de Apple (iPhone, Mac, etc.), los rangos de direcciones MMIO de los periféricos se almacenan en un formato de archivo especial llamado DeviceTree.
- La mayor parte del MMIO usado en el ataque no pertenece a ningún rango MMIO definido en DeviceTree.
- No está claro cómo los atacantes descubrieron MMIO que el firmware no usa ni a qué periférico pertenecen esas direcciones MMIO.
- Se confirmó que estos registros MMIO pertenecen a un coprocesador GPU.
- Los atacantes usaron estos registros MMIO para evadir la Page Protection Layer (PPL) y para parchear entradas de la tabla de páginas.
- La forma de calcular el hash hace que la función de hardware usada en el ataque realice una operación de acceso directo a memoria (DMA) hacia la ubicación solicitada.
Opinión de GN⁺
- Esta investigación revela una cadena de ataque extremadamente sofisticada dirigida a iPhone. Es un hallazgo muy importante para los investigadores de seguridad y puede contribuir a reforzar la seguridad de los productos de Apple.
- Sigue siendo un misterio cómo los atacantes descubrieron funciones de hardware que el firmware no utiliza. Esto subraya la importancia de la investigación en seguridad de hardware.
- Este artículo ofrece contenido muy interesante para quienes se interesan por la seguridad de software y hardware. Los métodos de ataque altamente complejos y el proceso para analizarlos muestran la profundidad y la necesidad de la investigación en seguridad.
1 comentarios
Opinión de Hacker News
Lo sorprendente del abuso de MMIO
Resumen en Twitter de Steve Weis
Explicación sobre Coresight
Especulación sobre la posibilidad de descubrir registros MMIO
Duda sobre el uso de hash de datos en funciones de depuración del chip
Observación sobre las características del algoritmo hash
Admiración por el esfuerzo de los atacantes
Explicación de la función aprovechada por los atacantes
Importancia de la nueva vulnerabilidad descubierta