Hyper-Threading, buffers compartidos y un índice erróneo: las fronteras de la máquina virtual quedan reducidas a una formalidad.
Los investigadores de VUSec y los ingenieros de Google describen en detalle en un texto conjunto una cadena de vulnerabilidades y un exploit llamado «L1TF Reloaded», que se dirige a procesadores Intel de la familia Skylake y anteriores. En resumen: la vulnerabilidad permite que una máquina virtual convenza al procesador de manera que bytes arbitrarios de la memoria RAM del host entren en la caché L1, y luego los extraiga mediante un canal de temporización, lo que proporciona al atacante un primitivo de lectura arbitraria de la memoria del host y la posibilidad de robar secretos de otros sistemas huésped.
Para entender cómo funciona, basta recordar dos propiedades de los CPU x86 modernos: la ejecución especulativa y las cachés SRAM jerárquicas. El procesador ejecuta por adelantado instrucciones según predicciones de salto, y aunque los resultados especulativos normalmente se revierten, los efectos secundarios en la caché permanecen. El exploit combina una técnica «half-Spectre» —cuando el código del kernel carga especulativamente en L1 datos usando un índice controlable— y el «L1 Terminal Fault» (L1TF), un fallo de traducción de direcciones por hardware en el que, ante un fallo de traducción, el procesador aún puede acceder a L1 como si la dirección fuera física. En conjunto, esto permite cargar en L1 el byte deseado de memoria y luego codificarlo como la selección de una línea en el búfer del atacante, para después recuperar el valor midiendo el tiempo de acceso (Flush+Reload).
Los investigadores de VUSec demostraron que en la práctica esta combinación ofrece mucho más que la filtración de bytes aislados: el huésped atacante primero «cruza» punteros en la estructura physmap del kernel del host y restaura la base del mapeo de la memoria física, luego recorre una cadena de punteros —desde objetos de KVM hasta task_struct y las tablas de páginas raíz— y finalmente puede realizar una descodificación a nivel de entradas de las tablas de páginas. Esto permite traducir direcciones virtuales de los huéspedes a direcciones físicas del host y leer masivamente la memoria ajena, incluso claves privadas TLS en el ejemplo con Nginx.
Por fortuna, no todos los procesadores son vulnerables: los modelos Intel más modernos (Cascade Lake y posteriores) no están afectados por L1TF. Para las clases Skylake vulnerables fue necesaria una respuesta por software, y el conjunto de medidas resultó ser multinivel y laborioso. Entre los pasos aplicados se incluyen la búsqueda minuciosa y corrección de gadgets «half-Spectre» en el código de KVM y del kernel (uso de array_index_nospec y técnicas similares), la limpieza forzada de la caché L1 en las transiciones VM Exit/Enter, y una solución más fundamental por parte de Google: Address Space Isolation (ASI).
ASI está diseñada como una protección arquitectónica proactiva: el kernel opera en un espacio de direcciones «restringido» sin mapeos sensibles, y cuando se necesita acceder al espacio completo se realiza un ASI-Exit controlado con limpieza de la micromemoria del procesador y, a continuación, un ASI-Enter. Esto rompe la correlación entre la ejecución especulativa en contexto del kernel y los datos secretos de usuarios y huéspedes. Según la experiencia de Google, con ASI activado y la limpieza de la caché L1 en las transiciones de entrada, la degradación total del rendimiento en benchmarks fue baja —por lo general menos del 1–3%.
Otro detalle complejo son los recursos compartidos del hiperhilo (SMT). Incluso después de limpiar la caché existe el riesgo de que el hilo lógico vecino consiga leer los datos antes de la limpieza, por lo que Google implementó mecanismos de «stunning» —pausas temporales del hilo lógico vecino durante el ASI-Exit— para evitar fugas, aunque esto exige una optimización cuidadosa para minimizar la sobrecarga en el rendimiento.
Los autores subrayan la importancia de la colaboración entre la industria y la academia. El equipo VUSec realizó la investigación en un nodo dedicado proporcionado por Google para no poner en riesgo a otros clientes; más tarde los investigadores presentaron los resultados en la oficina de Google en Zúrich y recibieron una recompensa de $151 515 —el nivel más alto del programa de recompensas Google Cloud VRP. Las correcciones y parches en KVM y el kernel se entregaron a la comunidad de Linux, y ASI se está desarrollando conjuntamente con upstream.
La conclusión es sencilla: tratar cada gadget por separado tras cada nueva vulnerabilidad de hardware es poco fiable y más costoso a largo plazo que contramedidas arquitectónicas que rompan la posibilidad fundamental de fugas especulativas. Address Space Isolation es un ejemplo de ese enfoque: cierra toda una clase de ataques manteniendo un rendimiento aceptable, lo cual es crítico para su adopción generalizada y la seguridad real de los entornos en la nube.