Los investigadores del Centro Helmholtz de Seguridad de la Información (CISPA) han publicado un nuevo método de ataque llamado CacheWarp, que permite comprometer el mecanismo de protección AMD SEV (Virtualización Encriptada Segura), utilizado en sistemas de virtualización para proteger máquinas virtuales de la interferencia del hipervisor o del administrador del sistema anfitrión. El método propuesto permite a un atacante con acceso al hipervisor ejecutar código externo y escalar privilegios dentro de una máquina virtual protegida mediante AMD SEV.
El ataque se basa en la explotación de una vulnerabilidad (CVE-2023-20592) provocada por un manejo inadecuado de la caché durante la ejecución de la instrucción de procesador INVD, lo que permite la desincronización de los datos en la memoria y la caché, y eludir los mecanismos de integridad de la memoria de las máquinas virtuales, implementados mediante extensiones SEV-ES y SEV-SNP. La vulnerabilidad afecta a los procesadores AMD EPYC de primera a tercera generación.
Para los procesadores AMD EPYC de tercera generación (Zen 3), el problema se ha solucionado en la actualización de microcódigo de noviembre lanzada ayer por AMD (la corrección no conlleva una disminución del rendimiento). No se ha previsto una solución para las primeras y segundas generaciones de AMD EPYC (Zen 1 y Zen 2), ya que estos CPU no cuentan con la soporte para la extensión SEV-SNP, que proporciona control de integridad. máquinas virtuales. La cuarta generación de procesadores AMD EPYC "Genoa" basada en la microarquitectura "Zen 4" no es vulnerable.
La tecnología AMD SEV se utiliza para aislar máquinas virtuales por 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 el cifrado a nivel de hardware de la memoria de las máquinas virtuales. Además, mediante la extensión SEV-ES (Estado Encriptado) se protege los registros del CPU. Solo el sistema operativo huésped en ejecución tiene acceso a los datos descifrados, mientras que los demás máquinas virtuales y el hipervisor, al intentar acceder a esta memoria, reciben un conjunto de datos cifrados.
En la tercera generación de procesadores AMD EPYC se ha implementado una extensión adicional SEV-SNP (Secure Nested Paging), que garantiza un funcionamiento seguro con tablas de páginas de memoria anidadas. Además del cifrado general de la memoria y la isolación de registros, SEV-SNP incorpora medidas adicionales para proteger la integridad de la memoria, impidiendo que el hipervisor realice modificaciones en la VM. La gestión de las claves de cifrado se lleva a cabo en el lado del procesador PSP (Platform Security Processor) integrado en el chip, desarrollado sobre una arquitectura ARM.
La esencia del método de ataque propuesto consiste en utilizar la instrucción INVD para invalidar bloques (líneas) en el caché de páginas sucias (dirty) sin restablecer los datos acumulados en el caché a la memoria (write-back). Así, el método permite expulsar datos modificados del caché sin alterar el estado de la memoria. Para llevar a cabo el ataque, se propone usar excepciones de software (fault injection) para interrumpir el funcionamiento de la máquina virtual en dos puntos: en el primero, el atacante invoca la instrucción 'wbnoinvd' para volcar todas las operaciones de escritura acumuladas en el caché a la memoria, y en el segundo, invoca la instrucción 'invd' para devolver las operaciones de escritura no reflejadas en la memoria a su estado anterior.
Para verificar la vulnerabilidad de sus sistemas, se ha publicado un prototipo de exploit que permite realizar una inyección de excepciones en una máquina virtual protegida a través de AMD SEV, y revertir a un estado anterior los cambios no volatizados en la memoria de la VM. La reversión de cambios puede utilizarse para modificar el flujo de ejecución del programa mediante el retorno a una antigua dirección de retorno en la pila, o para su uso al ingresar parámetros de una antigua sesión, para la cual se había realizado previamente la autenticación, a través del retorno del valor indicador de autenticación.
Por ejemplo, los investigadores han demostrado la posibilidad de aplicar el método CacheWarp para realizar un ataque Bellcore sobre la implementación del algoritmo RSA-CRT en la biblioteca ipp-crypto, lo que permitió recuperar la clave privada mediante la sustitución de errores en el cálculo de la firma digital. También se mostró cómo se pueden suplantar los parámetros de verificación de sesión para OpenSSH al conectarse de forma remota al sistema huésped, y luego cambiar el estado de verificación al ejecutar la utilidad sudo para obtener privilegios de root en Ubuntu 20.04. El funcionamiento del exploit fue probado en sistemas con procesadores AMD EPYC 7252, 7313P y 7443.
Fuente: opennet.ru
