Las CPU AMD Zen 5 son vulnerables a un fallo que permite modificar microcódigo y eludir la aislamiento SEV-SNP

La empresa AMD ha incluido los procesadores basados en la microarquitectura Zen 5 en la lista de productos afectados por la vulnerabilidad EntrySign, que permite eludir el mecanismo de verificación de la firma digital al actualizar el microcódigo. Inicialmente, se pensaba que la vulnerabilidad solo afectaba a las CPU AMD de la 1ª a la 4ª generación de la microarquitectura Zen. Así, la vulnerabilidad resultó ser aplicable a procesadores como Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) y Ryzen 9000HX (Fire Range).

Además de actualizar el microcódigo, para eliminar la vulnerabilidad en los sistemas que utilizan la certificación SEV-SNP, también se requiere actualizar el firmware AMD SEV, que se incluye en las actualizaciones de BIOS. Se afirma que la empresa AMD ha proporcionado a los fabricantes de hardware un firmware modificado (ComboAM5PI 1.2.0.3c AGESA) necesario para abordar el problema, pero las actualizaciones finales de BIOS disponibles para los consumidores pueden ser lanzadas por los fabricantes después de semanas o meses.

Los empleados de AMD también han propuesto incluir en el kernel de Linux un parche que bloquea la carga de actualizaciones de microcódigo no oficiales (se señala que las actualizaciones de microcódigo correctas deben instalarse junto con el BIOS del fabricante de hardware, pero ya han surgido intentos por parte de entusiastas de crear correcciones no oficiales basadas en fragmentos de microcódigo extraídos del BIOS). Se recomienda a los usuarios que esperen las actualizaciones oficiales de BIOS.

La vulnerabilidad EntrySign, que permite la modificación del microcódigo, compromete el mecanismo AMD SEV (Virtualización Encriptada Segura), usado en sistemas de virtualización para protección. máquinas virtuales de la interferencia por parte del hipervisor o del administrador del sistema host. Durante un ataque, es posible infiltrarse en el funcionamiento de sistemas invitados protegidos mediante las extensiones AMD SEV (Virtualización Encriptada Segura) y SEV-SNP (Paginación Anidada Segura), que ofrecen garantías de integridad de la memoria de las máquinas virtuales, aislando registros de procesador y asegurando un funcionamiento seguro con tablas de páginas de memoria anidadas.

La vulnerabilidad se debe al uso del microcódigo del algoritmo de autenticación CMAC en lugar de una función hash segura durante el proceso de verificación. La empresa AMD utiliza una clave privada RSA para firmar digitalmente el microcódigo cargado en el procesador, y junto con el parche del microcódigo distribuye la clave pública. Para verificar que la clave pública coincide con el par original de claves RSA, el procesador compara el hash de la clave pública de AMD, incorporada durante la fabricación en la CPU, con el hash de la clave pública indicado en el parche.

La autenticación del microcódigo en el parche se realiza comparando el hash proporcionado con el parche, firmado digitalmente (RSASSA-PKCS1-v1_5), con el hash calculado a partir del microcódigo realmente suministrado en el parche. Si el hash de referencia y el hash calculado coinciden, el parche se carga en la memoria interna de la CPU. El problema es que, en lugar de utilizar funciones hash criptográficamente robustas recomendadas, se usó el algoritmo CMAC, que no está diseñado para tales operaciones y no está protegido contra colisiones.

CMAC no es una función hash, sino que implementa un código de autenticación de mensajes (Message Authentication Code) dependiente de una clave de cifrado. La operación AES-CMAC se reduce al uso del algoritmo criptográfico AES y la combinación del resultado de su aplicación con el siguiente bloque de datos mediante una operación XOR. Este esquema garantiza que la modificación de los datos de entrada resultará en un cambio impredecible en los datos de salida. Sin embargo, no se debe usar CMAC como función hash, ya que cualquier persona que conozca la clave de cifrado original puede conocer los estados intermedios de cifrado y calcular valores que puedan compensar el cambio en los datos de entrada, de modo que el resultado de aplicar CMAC permanezca inalterado.

AMD utiliza una única clave de cifrado para AES-CMAC, suministrada en todas las CPU desde Zen 1. Por lo tanto, es suficiente extraer esta clave de cualquier CPU de AMD y será aplicable a todas las demás CPU. Los investigadores han descubierto que, para el cifrado AES-CMAC, AMD ha utilizado una clave conocida, tomada de un ejemplo mencionado en las recomendaciones sobre el uso de cifrados por bloques NIST SP 800-38B. Dado que AES-CMAC se utiliza para el hash de una clave RSA incrustada y el contenido de microcódigo, al definir la clave de cifrado AES-CMAC, se ha abierto la posibilidad de sustituir en el parche otra clave RSA pública y modificar el contenido del microcódigo.

Para crear un parche ficticio, es suficiente generar una nueva clave pública, que produzca el mismo hash que el generado por la clave pública original de AMD, así como encontrar colisiones para la firma digital. Las colisiones se forman al adjuntar un bloque adicional al microcódigo que parece un conjunto de datos aleatorios. De esta manera, se puede preparar un parche modificado con microcódigo correspondiente a la firma digital con la que fue sellado el parche original de AMD. La herramienta Zentool, que incluye utilidades para analizar microcódigo y crear parches para modificándolo, está disponible bajo licencia Apache 2.0. Para reemplazar el microcódigo, es necesario tener derechos para ejecutar código a nivel de anillo cero de protección (las tecnologías VT-x y AMD-V permiten que el sistema invitado se ejecute con derechos en Ring 0).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster