Vulnerabilidad en las CPU de AMD que permite saltarse el mecanismo de protección SEV (Secure Encrypted Virtualization)

Investigadores del Centro Helmholtz para la Seguridad de la Información (CISPA) han publicado un nuevo método de ataque CacheWarp para comprometer el mecanismo de seguridad AMD SEV (Secure Encrypted Virtualization) utilizado en los sistemas de virtualización para proteger las máquinas virtuales de la interferencia del hipervisor o del administrador del sistema host. El método propuesto permite a un atacante con acceso al hipervisor ejecutar código de terceros y escalar privilegios en una máquina virtual protegida mediante AMD SEV.

El ataque se basa en el uso de una vulnerabilidad (CVE-2023-20592) causada por el funcionamiento incorrecto del caché durante la ejecución de la instrucción del procesador INVD, con la ayuda de la cual es posible lograr una discrepancia de datos en la memoria y el caché. y mecanismos de derivación para mantener la integridad de la memoria de la máquina virtual, implementados en base a las extensiones SEV-ES y SEV-SNP. La vulnerabilidad afecta a los procesadores AMD EPYC desde la primera hasta la tercera generación.

Para los procesadores AMD EPYC de tercera generación (Zen 3), el problema se resuelve en la actualización del microcódigo de noviembre publicada ayer por AMD (la solución no produce ninguna degradación del rendimiento). Para la primera y segunda generación de AMD EPYC (Zen 1 y Zen 2), no se proporciona protección, ya que estas CPU no son compatibles con la extensión SEV-SNP, que proporciona control de integridad para máquinas virtuales. La cuarta generación de procesadores AMD AMD EPYC “Genoa” basados ​​​​en la microarquitectura “Zen 4” no es vulnerable.

La tecnología AMD SEV se utiliza para el aislamiento de máquinas virtuales por parte de proveedores de nube como Amazon Web Services (AWS), Google Cloud, Microsoft Azure y Oracle Compute Infrastructure (OCI). La protección AMD SEV se implementa mediante cifrado a nivel de hardware de la memoria de la máquina virtual. Además, la extensión SEV-ES (Estado cifrado) protege los registros de la CPU. Sólo el sistema invitado actual tiene acceso a los datos descifrados, y cuando otras máquinas virtuales y el hipervisor intentan acceder a esta memoria, reciben un conjunto de datos cifrados.

La tercera generación de procesadores AMD EPYC introdujo una extensión adicional, SEV-SNP (Secure Nested Paging), que garantiza el funcionamiento seguro de las tablas de páginas de memoria anidadas. Además del cifrado de memoria general y el aislamiento de registros, SEV-SNP implementa medidas adicionales para proteger la integridad de la memoria al evitar cambios en la VM por parte del hipervisor. Las claves de cifrado se administran en el lado de un procesador PSP (Procesador de seguridad de plataforma) separado integrado en el chip, implementado sobre la base de la arquitectura ARM.

La esencia del método de ataque propuesto es utilizar la instrucción INVD para invalidar bloques (líneas) en el caché de páginas sucias sin volcar los datos acumulados en el caché a la memoria (escritura regresiva). Por lo tanto, el método le permite desalojar los datos modificados del caché sin cambiar el estado de la memoria. Para llevar a cabo un ataque, se propone utilizar excepciones de software (inyección de fallas) para interrumpir el funcionamiento de la máquina virtual en dos lugares: en primer lugar, el atacante llama a la instrucción “wbnoinvd” para restablecer todas las operaciones de escritura en memoria acumuladas en el caché, y en segundo lugar llama a la instrucción “invd” para devolver las operaciones de escritura no reflejadas en la memoria al estado anterior.

Para comprobar sus sistemas en busca de vulnerabilidades, se ha publicado un prototipo de exploit que le permite insertar una excepción en una máquina virtual protegida mediante AMD SEV y revertir los cambios en la VM que no se han restablecido en la memoria. La reversión de un cambio se puede utilizar para cambiar el flujo de un programa devolviendo una dirección de retorno anterior en la pila, o para usar los parámetros de inicio de sesión de una sesión anterior que fue autenticada previamente devolviendo un valor de atributo de autenticación.

Por ejemplo, los investigadores demostraron la posibilidad de utilizar el método CacheWarp para realizar un ataque Bellcore a la implementación del algoritmo RSA-CRT en la biblioteca ipp-crypto, que permitió recuperar la clave privada mediante la sustitución de errores al calcular una clave digital. firma. También muestra cómo puede cambiar los parámetros de verificación de la sesión a OpenSSH cuando se conecta de forma remota a un sistema invitado y luego cambiar el estado de verificación cuando ejecuta la utilidad sudo para obtener derechos de root en Ubuntu 20.04. El exploit ha sido probado en sistemas con procesadores AMD EPYC 7252, 7313P y 7443.

Fuente: opennet.ru

Añadir un comentario