¿Es esto posible?
Si es posible. El sistema host puede acceder a la memoria de la máquina virtual, lo que le permite leer cualquier cosa dentro de la máquina virtual, incluida la memoria en modo kernel. Unas cuantas soluciones de VM permiten que las instancias invitadas se vuelquen en un archivo o se suspendan (es decir, una versión VM de hibernación).
¿Esto es una amenaza?
Tenga en cuenta que la memoria de la máquina virtual no se almacenará completamente en la memoria física del host, sino que probablemente se almacenará parcialmente en un archivo de intercambio. Esto significa que parte de la memoria del sistema operativo invitado se almacena en el disco del host, lo que hace que el análisis de espacio inactivo sea un posible ataque, incluso después de que el sistema operativo invitado finalice. Las imágenes de máquinas virtuales suspendidas también pueden ser accesibles para un atacante si roba el disco o obtiene privilegios de lectura de archivos en el host. Si el atacante puede poner en peligro el host, también puede emitir lecturas y escrituras de memoria arbitrarias en el proceso de la máquina virtual, lo que permite el robo y la manipulación de datos.
¿Puede la máquina virtual capturar la memoria del host?
no debería ser capaz de hacerlo. Las máquinas virtuales funcionan creando versiones virtualizadas de procesadores y controladores de memoria. Este hardware virtual toma las interrupciones normales de acceso a la memoria y las traduce en un espacio de direcciones virtuales. Por ejemplo, el kernel del sistema operativo invitado podría desear acceder a la memoria física en 7a22d6aa
, pero la VM en realidad traduce esa dirección a vm.swap+0x7a22d6aa
, por lo que la VM desconoce la traducción.
Un ataque de este tipo requeriría la violación de los mecanismos de aislamiento integrados en la máquina virtual. Estos mecanismos de aislamiento son muy fuertes, ya que deben contener un sistema operativo completo y cualquier software / controlador que pueda ejecutar. El aislamiento a menudo se implementa a nivel de hardware utilizando extensiones de CPU como VT-x. Sin embargo, los sistemas VM son software y el software siempre tiene errores. Ha habido vulnerabilidades en el pasado donde el software en una máquina virtual fue capaz de atacar al host, generalmente a través de mecanismos de comunicación entre sistemas operativos utilizados para compartir archivos y la funcionalidad del portapapeles.