TikTag: un ataque que elude la protección MemTag en procesadores ARM
Hace pocos días, se dio a conocer la noticia de que un equipo de investigadores de la Universidad de Seúl y Samsung ha desarrollado una técnica de ataque, denominada TikTag, capaz de eludir el mecanismo de protección de hardware MemTag (Memory Tagging Extension, MTE) en los chips basados en la arquitectura ARMv8.5-A.
Este ataque aprovecha las fugas de datos resultantes de la ejecución especulativa de instrucciones de la CPU para determinar el contenido de las etiquetas de memoria (MemTags) en direcciones de memoria arbitrarias.
El ataque TikTag permite identificar etiquetas asociadas con bloques de memoria y evitar la protección de MemTag. Los investigadores demostraron la viabilidad del ataque aprovechando vulnerabilidades en el kernel de Linux y el navegador Chrome. Utilizando secuencias de instrucciones (gadgets) presentes en estos productos, llevaron a cabo la ejecución de código especulativo.
Estos gadgets, cuando se ejecutan en modo especulativo mediante código que opera con punteros, permiten leer los metadatos de MemTag en función de condiciones externas manipulables por el atacante. Tras una predicción incorrecta, el resultado de la ejecución especulativa se descarta, pero los datos resultantes permanecen en la memoria caché y pueden ser recuperados mediante análisis de canal lateral.
MemTag es una tecnología diseñada para vincular etiquetas a áreas de la memoria y realizar verificaciones del uso correcto de los punteros, con el fin de bloquear la explotación de vulnerabilidades como el acceso a bloques de memoria ya liberados, el desbordamiento del búfer y el acceso antes de la inicialización. Para cada 16 bytes de memoria física, se crea una etiqueta de 4 bits que actúa como una clave para acceder a esta memoria.
Las aplicaciones generan la etiqueta para el área de memoria asignada mediante instrucciones especiales de la CPU y la almacenan en los bits superiores no utilizados del puntero. Al acceder a la memoria utilizando un puntero etiquetado, el procesador verifica que la etiqueta vinculada al puntero coincida con las etiquetas de los bloques de memoria y permite el acceso solo si las etiquetas coinciden.
En las pruebas realizadas, la probabilidad de superar con éxito la protección MemTag se estimó en un 95% si el ataque se ejecuta en aproximadamente 4 segundos. Esta vulnerabilidad representa un riesgo significativo para la seguridad de los sistemas que dependen de la arquitectura ARMv8.5-A y subraya la necesidad de mejoras continuas en los mecanismos de protección de hardware.
En resumen, encontramos que las siguientes tres condiciones deben cumplirse para que la plantilla filtre la etiqueta MTE: (i) CHECK debe incluir al menos dos cargas con guessptr ; (ii) TEST debe acceder a testptr (ya sea carga o almacenamiento, dependiente o independiente de CHECK ); y (iii) CHECK debe estar cerca de BR (a menos de 5 ciclos de CPU) mientras que TEST debe estar lejos de CHECK (a más de 10 ciclos de CPU de distancia).
Los investigadores mencionan que han identificado dos tipos de gadgets que filtran información sobre MemTags en la técnica de ataque TikTag:
- En el primer caso, la ejecución especulativa ocurre cuando una rama se predice incorrectamente y las condiciones para la ejecución del gadget pueden ser manipuladas mediante llamadas al sistema. Este tipo de gadget es efectivo para atacar el kernel de Linux.
- En el segundo caso, la ejecución especulativa se aprovecha de errores en la predicción de la relación entre lecturas y escrituras, utilizando la optimización STLF (Store-To-Load-Forwarding). Este tipo de gadget es útil para atacar el motor JavaScript V8 utilizado en los navegadores basados en Chromium.
ARM ha confirmado que los procesadores Cortex-X2, Cortex-X3, Cortex-A510, Cortex-A520, Cortex-A710, Cortex-A715 y Cortex-A720 son susceptibles a este tipo de ataque, pero ha indicado que no tiene planes de realizar cambios en la CPU para mitigar este problema. Argumentan que las etiquetas MemTag no son datos confidenciales para las aplicaciones según la arquitectura actual.
En cuanto a las medidas de mitigación, los investigadores sugieren utilizar instrucciones como sb o isb para deshabilitar la ejecución especulativa durante operaciones críticas de memoria. Además, se recomienda incluir relleno de otras instrucciones entre instrucciones de rama e instrucciones de acceso a memoria como una medida adicional para evitar la explotación de estos gadgets.
Finalmente, cabe mencionar que los investigadores publicaron un prototipo de ataque TikTag en GitHub, destacando su capacidad para explotar estos dos tipos de gadgets en entornos vulnerables.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.