Se ha demostrado un novedoso ataque de hardware denominado PACMAN contra los chipsets de procesador M1 de Apple, potencialmente armando a un actor malicioso con la capacidad de obtener una ejecución de código arbitrario en sistemas macOS.
El exploit descubierto por el equipo del MIT, se une al que os comentamos hace poco sobre el fallo ‘Augury’ descubierto en los chips M1 y A14, donde Apple afirmó que no suponen riesgo.
PACMAN aprovecha «ataques de ejecución especulativos para eludir un importante mecanismo de protección de la memoria, la autenticación de punteros ARM, una característica de seguridad que se utiliza para imponer la integridad del puntero«, dijeron en un artículo los investigadores del MIT Joseph Ravichandran, Weon Taek Na, Jay Lang y Mengjia Yan.
Lo que es más preocupante es que «si bien los mecanismos de hardware utilizados por PACMAN no se pueden parchear con características de software, los errores de corrupción de memoria pueden serlo«, añadieron los investigadores.
La vulnerabilidad tiene sus raíces en los códigos de autenticación de punteros (PAC), una línea de defensa introducida en la arquitectura arm64e que tiene como objetivo detectar y proteger contra cambios inesperados en los punteros, objetos que hacen referencia a una ubicación de dirección en la memoria.
Los PAC tienen como objetivo resolver un problema común en la seguridad del software, como las vulnerabilidades de corrupción de la memoria, que a menudo se explotan sobrescribiendo los datos de control en la memoria (es decir, punteros) para redirigir la ejecución de código a una ubicación arbitraria controlada por el atacante.
Si bien estrategias como la Aleatorización del Diseño del Espacio de Direcciones (ASLR) se han diseñado para aumentar la dificultad de realizar ataques de desbordamiento de búfer, el objetivo de los PAC es determinar la «validez de los punteros con un tamaño mínimo e impacto en el rendimiento», evitando efectivamente que un adversario cree punteros válidos para su uso en un exploit.
Esto se logra protegiendo un puntero con un hash criptográfico, llamado código de autenticación de puntero (PAC), para garantizar su integridad. Apple explica la autenticación de puntero de la siguiente manera:
La autenticación de puntero funciona ofreciendo una instrucción especial de la CPU para añadir una firma criptográfica, o PAC, a los bits de alto orden no utilizados de un puntero antes de almacenar el puntero. Otra instrucción elimina y autentica la firma después de leer el puntero de memoria. Cualquier cambio en el valor almacenado entre la escritura y la lectura invalida la firma. La CPU interpreta el fallo de autenticación como corrupción de la memoria y establece un bit de alto orden en el puntero, lo que hace que el puntero no sea válido y hace que la aplicación se bloquee.
Cómo actua el exploit PACMAN
PACMAN «elimina la barrera principal para llevar a cabo ataques de secuestro de flujo de control en una plataforma protegida mediante autenticación de puntero«. Combina la corrupción de memoria y la ejecución especulativa para eludir la función de seguridad, filtrando «resultados de verificación de PAC a través de canales laterales microarquitectónicos sin causar ningún bloqueo».
El método de ataque, en pocas palabras, permite distinguir entre un PAC correcto y un hash incorrecto, lo que permite a un mal actor «forzar el valor PAC correcto mientras suprime los bloqueos y construye un ataque de secuestro de flujo de control en un programa o sistema operativo de víctima habilitado para PA».
La prevención de bloqueos, por su parte, tiene éxito porque cada valor PAC se adivina especulativamente explotando un canal lateral basado en la sincronización a través del búfer de retirada de la traducción (TLB) utilizando un ataque Prime+Probe.
Las vulnerabilidades de ejecución especulativa, como se observa en el caso de Spectre y Meltdown, arman la ejecución fuera de orden, una técnica que se utiliza para lograr una mejora del rendimiento en los microprocesadores modernos prediciendo la ruta más probable del flujo de ejecución de un programa.
Sin embargo, vale la pena señalar que el modelo de amenaza supone que ya existe una vulnerabilidad de corrupción de memoria explotable en un programa de víctimas (núcleo), lo que, a su vez, permite al atacante sin privilegios (una aplicación maliciosa) inyectar código pícaro en ciertas ubicaciones de memoria en el proceso de la víctima.
«Este ataque tiene implicaciones importantes para los diseñadores que buscan implementar futuros procesadores con autenticación de puntero, y tiene amplias implicaciones para la seguridad de las futuras primitivas de integridad del flujo de control«, concluyeron los investigadores.
Apple se ha pronunciado al respecto, señalando la disminución del potencial de explotación en los salvajes de PACMAN:
Queremos agradecer a los investigadores su colaboración, ya que esta prueba de concepto avanza en nuestra comprensión de estas técnicas. Basándonos en nuestro análisis, así como en los detalles compartidos con nosotros por los investigadores, hemos llegado a la conclusión de que este problema no plantea un riesgo inmediato para nuestros usuarios y es insuficiente para eludir las protecciones de seguridad del sistema operativo por sí solo.
Mantener el software actualizado es obligatorio, ya que este tipo de errores de corrupción de memoria se pueden reparar. La parte de hardware de este exploit no se puede parchear; sin embargo, los usuarios no deben preocuparse, ya que requiere tanto exploits de software como de hardware para funcionar.
M1RACLES: otra amenaza a los chips de Apple
La vulnerabilidad se hace eco de otra amenaza irreparable llamada M1RACLES (CVE-2021-30747) que salió a la luz el año pasado, que permite que dos o más aplicaciones maliciosas instaladas en la máquina creen un canal encubierto para intercambiar datos entre ellas, sin usar memoria, sockets, archivos o cualquier otra característica típica del sistema operativo.