Noticia EntrySign: una vulnerabilidad que afecta a procesadores AMD Zen

El logotipo de vulnerabilidad de EntrySign


Recientemente, los ingenieros de Google han dado a conocer detalles sobre una vulnerabilidad crítica identificada como CVE-2024-56161. Bautizada bajo el nombre de EntrySign, este fallo permite evadir el mecanismo de verificación de firma digital durante la actualización del microcódigo en procesadores AMD que utilizan las primeras cuatro generaciones de la microarquitectura Zen.

EntrySign afecta a un amplio rango de procesadores, permite a un atacante eludir los controles de seguridad que garantizan la integridad del microcódigo, lo que podría abrir la puerta a modificaciones maliciosas en el comportamiento del hardware.

Sobre la vulnerabilidad​


El origen de esta vulnerabilidad se encuentra en la utilización del algoritmo AES-CMAC durante la verificación de la firma digital en lugar de una función hash confiable. AMD empleaba este algoritmo para firmar el microcódigo, utilizando una clave RSA privada y añadiendo una clave pública en el parche.

El proceso de verificación implica que el procesador compare el hash de la clave pública incorporada durante la fabricación con el hash de la clave especificada en el parche. Sin embargo, dado que se utilizó CMAC, que en realidad no es una función hash sino un código de autenticación de mensajes dependiente de una clave, se abrió una brecha de seguridad.

CMAC se basa en el algoritmo AES y utiliza operaciones XOR para combinar bloques de datos, pero al no estar diseñado para ser resistente a colisiones, permite que un atacante que conozca la clave de cifrado pueda calcular valores intermedios que compensen cambios en la entrada, dejando el resultado de la operación inalterado.

Tanto Intel como AMD diseñaron conjuntos de instrucciones de microcódigo basados en RISC únicos, ambos sin documentar, pero conceptualmente similares a otros conjuntos de instrucciones RISC como ARM o RISC-V. Al igual que el software, implementar hardware complejo correctamente es un desafío; históricamente, esto ha llevado a múltiples errores bien conocidos, como el error FDIV de Intel en Pentium en el año 1994.

AMD suministra una única clave de cifrado para AES-CMAC en todos sus procesadores desde Zen 1 hasta Zen 4, lo que significa que si alguien extrae esta clave de una CPU, puede aplicarla a todas las demás. De hecho, los investigadores han comprobado que estos procesadores utilizan una clave conocida, extraída de un ejemplo en las pautas NIST SP 800-38B.

Esto ha permitido, en teoría, generar parches falsos al sustituir la clave pública del parche por otra que produzca el mismo hash, y seleccionar colisiones para la firma digital. Dichas colisiones se logran añadiendo un bloque adicional de datos aparentemente aleatorios al microcódigo, de manera que el parche modificado mantenga la firma digital original de AMD.

EntrySign, la vulnerabilidad CVE-2024-56161 que permite a atacantes eludir controles de seguridad


Para abordar esta problemática y explorar nuevas formas de manipular el microcódigo en procesadores AMD, los ingenieros de Google desarrollaron Zentool, una colección de herramientas combinadas para el examen de parches de microcódigo, que incluyen desensamblaje limitado, creación de parches de microcódigo utilizando una cantidad limitada de ensamblaje de ingeniería inversa.

Zentool ha sido diseñado para facilitar el análisis y la modificación del microcódigo, ofreciendo una serie de comandos que permiten desde editar parámetros y reemplazar instrucciones hasta cargar el microcódigo modificado en la CPU y corregir la firma digital del parche.

Por ejemplo, el comando «zentool edit» posibilita la edición de parámetros en archivos de microcódigo, mientras que «zentool print» despliega información detallada sobre las estructuras internas del microcódigo. Asimismo, «zentool load» carga el microcódigo en la CPU y «zentool resign» recalcula la firma digital, considerando los cambios realizados. Además, el paquete incluye utilidades como mcas y mcop, que proporcionan funcionalidades de ensamblador y desensamblador para trabajar directamente con el microcódigo.

Las capacidades de Zentool permiten a los desarrolladores preparar y aplicar sus propios parches en los procesadores AMD Zen. Como ejemplo ilustrativo, se ha preparado un parche que modifica la lógica de la instrucción RDRAND. Tras aplicar este parche, la instrucción RDRAND deja de generar secuencias pseudoaleatorias y comienza a devolver de forma constante el número 4, demostrando así el poder de modificar el microcódigo y alterar el comportamiento esperado del procesador.

Cabe mencionar que Zentool viene acompañado de una guía detallada sobre la microarquitectura RISC86 utilizada en el microcódigo de AMD, así como de una nota instructiva que explica cómo crear microcódigo personalizado. La guía muestra, entre otras cosas, cómo diseñar nuevas instrucciones de procesador, modificar el comportamiento de las instrucciones existentes y cargar esos cambios directamente en la CPU.

Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Continúar leyendo...