Un equipo de investigadores de la Escuela Politécnica Federal de Zúrich (ETH Zúrich) ha publicado un artículo de investigación que demuestra cómo se puede utilizar un ataque Spectre v2 para un escape de entorno aislado en un entorno virtualizado. Con acceso a una única máquina virtual aislada, los investigadores pudieron robar datos valiosos a los cuales normalmente solo podría acceder el administrador del servidor. Los servidores basados en CPU de AMD (incluido el más nuevo de AMD, con arquitectura Zen 5) o el Coffee Lake de Intel son susceptibles al ataque.
El peligro de los ataques de Spectre para entornos virtuales
Regularmente escribimos sobre las vulnerabilidades de las CPU que usan la ejecución especulativa, donde se aprovechan las funciones estándar del hardware para robar secretos. Puedes leer nuestras publicaciones anteriores sobre este tema, que describen en detalle los principios generales de estos ataques, aquí, aquí y aquí.
Aunque este tipo de vulnerabilidad se descubrió por primera vez en 2018, hasta este artículo, los investigadores no habían demostrado un solo ataque realista. Todos sus esfuerzos han culminado en la noción de que, en teoría, un ataque sofisticado y dirigido al estilo de Spectre es factible. Además, en la mayoría de estos artículos, los investigadores se limitaron al escenario de ataque más básico: tomaron un ordenador, instalaron malware en él y luego usaron la vulnerabilidad del hardware de la CPU para robar secretos. El inconveniente de este enfoque es que, si un atacante instala correctamente malware en un PC, puede robar datos usando muchos otros métodos considerablemente más sencillos. Debido a esto, es poco probable que Spectre y ataques similares supongan una amenaza para los dispositivos de usuarios finales. Sin embargo, cuando se trata de entornos en la nube, no se debe descartar Spectre.
Imagina un proveedor que alquila servidores virtuales a organizaciones o personas. A cada cliente se le asigna su propia máquina virtual, que le permite ejecutar el software que desee. Los sistemas virtuales de otros clientes se pueden ejecutar en el mismo servidor. Separar los privilegios de acceso a los datos es fundamental en esta situación. Debes evitar que un atacante que haya obtenido acceso a una máquina virtual lea los datos confidenciales de un cliente adyacente o ponga en peligro la infraestructura del proveedor al acceder a los datos del host. Es precisamente en este escenario que los ataques de Spectre comienzan a aparecer como una amenaza considerablemente más peligrosa.
VMScape: una mirada práctica a un ataque de Spectre v2
En artículos de investigación anteriores que trataban sobre la viabilidad del ataque de Spectre, los investigadores no profundizaron en un escenario de ataque realista. Para un artículo académico, esto es normal. Una prueba de concepto teórica para una filtración de datos suele ser suficiente para que los fabricantes de CPU y los desarrolladores de software fortalezcan sus defensas y desarrollen tácticas defensivas.
Los autores del nuevo artículo de ETH Zúrich abordan directamente esta falta de datos y señalan que los escenarios examinados previamente para ataques en entornos virtualizados (como los de este artículo, también de ETH Zúrich) hicieron una suposición demasiado amplia: que los atacantes ya habían logrado instalar malware en el host. Al igual que con los ataques a ordenadores de sobremesa normales, esto no tiene mucho sentido práctico. Si el servidor ya está vulnerado, el daño ya está hecho.
El nuevo ataque que han propuesto en su artículo, denominado VMScape, utiliza el mismo mecanismo de branch target injection o inyección de destino de rama que se encuentra en todos los ataques desde Spectre v2. Ya lo hemos hablado varias veces antes, pero este es un breve resumen.
Branch target injection es una forma de entrenar el sistema de predicción de ramificaciones de una CPU, que acelera los programas mediante el uso de la ejecución especulativa. Esto significa que la CPU intenta ejecutar el siguiente conjunto de comandos antes incluso de conocer los resultados de los cálculos anteriores. Si adivina la dirección correcta (ramificación) que tomará el software, el rendimiento aumenta significativamente. Si se equivoca, los resultados simplemente se descartan.
Branch target injection es un ataque durante el cual un atacante puede engañar a la CPU para que acceda a datos secretos y los mueva a la caché durante la ejecución especulativa. Luego, el atacante recupera estos datos indirectamente a través de un canal lateral.
Los investigadores descubrieron que la separación de privilegios entre los sistemas operativos del host y el invitado durante la ejecución especulativa es imperfecta. Esto permite una nueva versión del ataque de inyección de destino de rama, que han denominado “Spectre-BTI basado en virtualización” o vBTI.
Como resultado, los investigadores pudieron leer datos arbitrarios de la memoria del host y solo tuvieron acceso a una máquina virtual con la configuración predeterminada. La velocidad de lectura de datos fue de 32 bytes por segundo en una CPU AMD Zen 4, con casi el 100 % de fiabilidad. Eso es lo suficientemente rápido como para robar elementos como claves de cifrado de datos, lo que deja abierta una ruta directa para robar información de máquinas virtuales adyacentes.
¿Es VMScape una amenaza en el mundo real?
Las CPU de AMD con arquitectura Zen desde la primera hasta la última quinta generación han demostrado ser vulnerables a este ataque. Esto se debe a las sutiles diferencias en la forma en que estas CPU implementan las protecciones contra ataques de Spectre, así como a la forma particular en que operan las primitivas vBTI de los autores. Con las CPU de Intel, este ataque solo es posible en servidores con las CPU de Coffee Lake más antiguas de 2017. Las arquitecturas de Intel más nuevas tienen protecciones mejoradas que hacen que la versión actual del ataque VMScape sea imposible.
El logro de los investigadores fue diseñar el primer ataque de Spectre v2 en un entorno virtual que se acerca a las condiciones del mundo real. No se basa en suposiciones demasiado permisivas ni en soportes como el software malicioso a nivel de hipervisor. El ataque VMScape es efectivo; elude muchas medidas de seguridad estándar, incluido el KASLR, y roba con éxito un secreto valioso: una clave de cifrado.
Afortunadamente, inmediatamente después de diseñar el ataque, los investigadores también propusieron una solución. Al problema se le asignó el identificador de vulnerabilidades CVE-2025-40300 y se parcheó en el kernel de Linux. Este parche en particular no reduce considerablemente el rendimiento computacional, lo que suele ser una preocupación con las protecciones basadas en software contra ataques de Spectre.
Los métodos para proteger datos confidenciales en entornos virtuales existen desde hace un tiempo. AMD tiene una tecnología llamada “Virtualización cifrada segura” y su subtipo, SEV-SNP, mientras que Intel tiene Extensiones de dominio de confianza (TDX). Estas tecnologías cifran los secretos, por lo que no tiene sentido intentar robarlos directamente. Los investigadores confirmaron que SEV proporciona protección adicional contra el ataque VMScape en las CPU de AMD. En otras palabras, es poco probable que se produzca un ataque VMScape en el mundo real contra servidores modernos. Sin embargo, con cada nuevo estudio, los ataques de Spectre se ven cada vez más realistas.
A pesar de la naturaleza académica de la investigación, los ataques que aprovechan la ejecución especulativa en las CPU modernas siguen siendo relevantes. Los operadores de entornos virtualizados deben seguir teniendo en cuenta estas vulnerabilidades y posibles ataques en sus modelos de amenaza.