Un grupo de investigadores de las universidades de Lovaina, Lübeck y Birmingham ha desarrollado un método de ataque denominado BadRAM (CVE-2024-21944), que permite eludir el mecanismo de autenticación y comprometer entornos protegidos mediante la extensión SEV-SNP en los procesadores AMD. Para llevar a cabo el ataque, el atacante, salvo en raras excepciones, debe obtener acceso físico a los módulos de memoria y también tener la capacidad de ejecutar código en el nivel de anillo cero (ring0) en el servidor que ejecuta entornos de huéspedes protegidos.
Las extensiones AMD SEV (Virtualización Segura Encriptada) están diseñadas para proporcionar garantías de integridad de la memoria de las máquinas virtuales, así como su protección contra interferencias y análisis por parte del administrador del sistema anfitrión, que puede ejecutar código en el nivel del hipervisor. Inicialmente, la protección de AMD SEV se limitaba a encriptar el contenido de la memoria del sistema huésped y a aislar los registros, pero posteriormente, en los procesadores AMD EPYC, se implementó la extensión SEV-SNP (Paginación Anidada Segura) para un manejo seguro de las tablas de páginas de memoria anidadas, garantizando la integridad de la memoria y evitando modificaciones en la memoria del huésped por parte del hipervisor.
El mecanismo AMD SEV-SNP fue diseñado para que las agencias de inteligencia o el personal de los centros de datos y proveedores de nube, donde se ejecutan sistemas huéspedes protegidos, no puedan interferir en el funcionamiento del sistema huésped. El método de ataque BadRAM propuesto permite eludir las garantías proporcionadas mediante la modificación de los metadatos SPD (Detección de Presencia Serial) en los módulos de memoria DDR4 o DDR5. En caso de un ataque exitoso, el atacante puede sobrescribir los datos encriptados en la memoria del sistema huésped (a nivel de texto cifrado, sin posibilidad de descifrado) y eludir el mecanismo de atestación, por ejemplo, para ocultar la inserción de un backdoor en una máquina virtual protegida mediante la tecnología SEV-SNP.
El ataque se basa en la configuración de parámetros ficticios en el SPD del módulo de memoria, lo que hace que el procesador acceda a direcciones inexistentes que reflejan áreas de memoria existentes. El atacante puede modificar el SPD de tal manera que el módulo de memoria devuelva al procesador un tamaño que supera las características reales del módulo. Después de esto, el atacante puede mapear la memoria ficticia inexistente a un área real en la DRAM que ya se está utilizando de forma cifrada en sistemas invitados protegidos. Como resultado, se produce una situación en la que diferentes direcciones apuntan a la misma memoria física (dos áreas reflejadas en una región del chip DRAM), es decir, se puede acceder a la memoria real ya en uso a través de la dirección de la área de memoria reflejada ficticia y eludir los mecanismos de protección de memoria en la CPU.

Para llevar a cabo el ataque, es suficiente contar con un programador básico que cuesta alrededor de 10 dólares, compuesto por un microcontrolador Raspberry Pi Pico, un conector para módulos DDR4/DD5 y una fuente de alimentación. Las utilidades utilizadas para realizar el ataque, el módulo del núcleo y los prototipos de exploits están disponibles en GitHub.

Para chips de ciertos fabricantes, en los que no se ha ejecutado el bloqueo de sobrescritura del SPD, el ataque se puede realizar por software sin acceso físico al servidor. Por ejemplo, se pueden modificar programáticamente los parámetros de los módulos de memoria de la empresa Corsair con iluminación RGB. En el caso de un ataque completamente por software, el sistema puede verse comprometido, por ejemplo, mediante una actualización de BIOS maliciosa o una maniobra por parte de los administradores. servidores en servicios en la nube.

Como prueba de la efectividad del método, se han demostrado dos ataques. En el primer ataque se muestra la posibilidad de reproducir el texto cifrado: al utilizar AMD SEV, los datos en la memoria se almacenan de forma cifrada y el atacante no puede determinar el contenido, pero tiene la capacidad de leer los datos cifrados y luego sustituirlos por otro contenido cifrado.
En el segundo ataque se demuestra la posibilidad de eludir el mecanismo de atestación SEV-SNP, que proporciona una confirmación criptográfica de la integridad de una máquina virtual ejecutándose en un entorno seguro. El atacante puede interceptar el informe de atestación de la máquina virtual correcta y luego presentarlo como si fuera para una máquina virtual comprometida, por ejemplo, ocultando las huellas de la inserción de un backdoor.
El problema afecta a las generaciones 3 y 4 de los procesadores AMD de la serie EPYC, que se distribuyen bajo los nombres en clave Milan, Milan-X, Genoa, Bergamo, Genoa-X y Siena. Para bloquear la vulnerabilidad, AMD ya ha lanzado una actualización del firmware SEV que implementa la verificación ALIAS_CHECK, evitando la manipulación de la memoria característica del ataque en cuestión.
Las tecnologías Scalable SGX y TDX ofrecidas por Intel no son vulnerables a este ataque, ya que las verificaciones necesarias están presentes desde el principio. La tecnología clásica Intel SGX, que Intel degradó a obsoleta en 2021, es parcialmente vulnerable (al igual que en el ataque previamente conocido como MemBuster, el atacante puede analizar los accesos a la memoria cifrada, es decir, solo se puede leer el texto cifrado, pero no sobrescribirlo). No se han realizado pruebas de las extensiones CCA (Confidential Compute Architecture) en los procesadores de ARM.
Se informa además de otra vulnerabilidad relacionada con AMD SEV-SNP. La vulnerabilidad se ha identificado en el fork en desarrollo de AMD del emulador QEMU, diseñado para ejecutarse máquinas virtuales con SEV-SNP. El problema permite al administrador del entorno host obtener acceso root a los sistemas invitados mediante la manipulación de las tablas ACPI. La vulnerabilidad se debe a que durante el arranque del sistema invitado se realiza una verificación de integridad del núcleo de Linux, del disco RAM inicial y de los parámetros del núcleo, pero no se tienen en cuenta las tablas ACPI, a través de las cuales el hipervisor puede inyectar un código AML (ACPI Machine Language) especialmente diseñado para ejecutarse en el entorno invitado. Se afirma que el problema no es específico de QEMU y se manifiesta en cualquier hipervisor y emulador, ya que el núcleo de Linux confía en cualquier dato ACPI recibido del hipervisor.


Fuente: opennet.ru
