Los investigadores de seguridad han descubierto una vulnerabilidad crítica en las CPU AMD Zen que permite a atacantes con privilegios elevados cargar parches de microcódigo maliciosos, evitando las comprobaciones de firmas criptográficas.
Esta falla, denominada «EntrySign», se debe al uso que hace AMD del algoritmo AES-CMAC como función hash durante la validación del microcódigo, una decisión de diseño que permite ataques de colisión y falsificación de firmas.
Fundamentos de seguridad del microcódigo
Según los investigadores de Bug Hunting de Google, los procesadores x86 modernos como la arquitectura Zen de AMD se basan en microcódigo, una capa de instrucciones similares a RISC que traducen operaciones x86 complejas en lógica de hardware ejecutable.
AMD emplea actualizaciones de microcódigo cifradas autenticadas mediante firmas RSA-2048 para corregir errores de hardware sin retiradas físicas. El proceso de validación consta de cuatro etapas:
- Validación de clave pública: la CPU codifica la clave pública RSA incorporada del parche utilizando AES-CMAC y la compara con un hash de hardware fusionado.
- Hash de contenido: AES-CMAC genera un resumen de 128 bits de los quads de instrucciones y los registros de coincidencia del parche.
- Verificación de firma: la firma RSA se descifra y se compara con el hash del contenido mediante el relleno PKCS #1 v1.5.
- Instalación de parches: el microcódigo validado se carga en SRAM, anulando las instrucciones de ROM.
Esta cadena supone la resistencia a las colisiones de CMAC, una suposición destrozada por los hallazgos de EntrySign.
La vulnerabilidad de colisión de hash CMAC
La falla fatal radica en el uso dual de AES-CMAC por parte de AMD como mecanismo de autenticación de contenido y hash de claves.
Si bien CMAC proporciona integridad contra atacantes pasivos, falla catastróficamente cuando los adversarios controlan la clave AES, un escenario que se hace posible mediante ingeniería inversa de hardware o ataques de canal lateral.
Los investigadores demostraron que conocer la clave AES-CMAC permite:
Colisiones de clave pública: creación de nuevos módulos RSA (N’ = p*q) que combinan el valor CMAC fusionado de AMD.
Falsificación de firmas: creación de parches maliciosos cuyo resumen CMAC coincida con una carga útil firmada legítimamente.
El ataque explota la estructura lineal de CMAC: al inyectar un «bloque de compensación» de 16 bytes (ae4634b83805ea28d7ecac0053a6ab6c), los atacantes manipulan estados intermedios de CMAC para forzar colisiones.
Esto permitió crear un par de claves RSA válido (N = 0x151d07eae2f…) que factoriza números primos pequeños, lo que permite la derivación de claves privadas:
Mecánica de explotación
Con una clave pública en colisión, los atacantes evitan la verificación de hash fusionada de AMD. Luego explotan la verificación de relleno laxa de RSASSA-PKCS1-v1.5 para firmar microcódigo malicioso.
Un parche de prueba de concepto secuestró la instrucción RDRAND para devolver siempre 4:
- Manipulación del registro de coincidencias: redireccionamiento del flujo de ejecución del microcódigo para parchear SRAM.
- Sobrescritura de instrucciones: Reemplazo de las microoperaciones de RDRAND con mov.qs rax, 4.
- Bypass constante de Montgomery: forjar la constante N’ (-N^{-1} mod R) para satisfacer las comprobaciones multiplicadoras de Montgomery de AMD.
Mitigaciones
EntrySign expone todas las CPU Zen 1-4 a un secuestro persistente de microcódigo por parte de atacantes con acceso de anillo 0. Si bien los parches se restablecen al reiniciar, las amenazas persisten en:
- Los hipervisores comprometidos podrían implementar microcódigo hostil en las máquinas virtuales invitadas.
- Los OEM maliciosos pueden precargar firmware con parches de puerta trasera.
- La raíz de confianza dinámica SKINIT de AMD podría subvertirse durante los lanzamientos medidos.
La mitigación de AMD reemplaza CMAC con un hash personalizado e implementa comprobaciones de procesador seguro (ASP) antes de que se activen los núcleos x86. Sin embargo, actualizar arquitecturas Zen antiguas sigue siendo un desafío debido a las limitaciones de almacenamiento de ROM.
«Esta vulnerabilidad subraya la fragilidad de los anclajes de confianza criptográficos en el hardware», señaló el equipo de investigación.
«Cuando los algoritmos críticos para la seguridad, como el hash, se reutilizan más allá de su alcance de diseño, se crean riesgos sistémicos».
La divulgación coincide con el lanzamiento de Zentool, un marco de código abierto para analizar y crear microcódigo AMD. Los investigadores esperan que promueva los esfuerzos de la comunidad para auditar y reforzar la seguridad de la CPU de bajo nivel.
A medida que las CPU sustentan cada vez más las infraestructuras de nube y de inteligencia artificial, EntrySign destaca la necesidad urgente de primitivas criptográficas ágiles y actualizables en silicio, una lección que la industria ahora se apresura a implementar.