Dumping de memoria: ¿Causa preocupación en la virtualización?

8

Recientemente, comencé a explorar amenazas a máquinas virtuales en general. La primera pregunta que se me ocurrió fue si una máquina host puede volcar toda su memoria en un archivo e inspeccionar la memoria para leer el contenido de la imagen de memoria de la máquina virtual.

Como la virtualización esencialmente lleva al hecho de que el huésped y el host comparten la misma RAM, supongo que esto es posible.

=====================
|           |VM|    |
=====================

Supongamos que la memoria se ve así. 1 GB de memoria para la máquina virtual de un total de 8 GB. Por lo tanto, si vuelco la RAM, debería poder ver el contenido de la RAM de la VM.

Q1. ¿Es esta una posibilidad? enlace muestra cómo obtener un volcado de memoria

Q2. ¿Es esto una amenaza? (Supongo que no). Sin embargo, si alguien tiene una idea, sería espléndido.

Q3. Un escenario más interesante: ¿podría la máquina virtual de alguna manera tomar la memoria del host? es decir, ¿existen ataques conocidos en VMWare u otro software que haya documentado tal ataque?

    
pregunta sudhacker 18.09.2012 - 16:50
fuente

3 respuestas

5

¿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.

    
respondido por el Polynomial 18.09.2012 - 17:56
fuente
4

El host sin duda puede obtener una copia del estado completo de una VM, incluido lo que la VM ve como RAM. Esto se denomina "instantánea" y es una característica deseable.

Puedes imaginar el sistema host como el núcleo del kernel. Una VM no puede estar protegida de su host, como tampoco lo puede proteger un sistema operativo de una CPU dañada y dañada. Si su modelo de seguridad llama desde la protección de la máquina virtual desde el sistema de alojamiento, entonces su modelo de seguridad está condenado desde el inicio.

(Aunque tal cosa podría existir en el contexto de cifrado totalmente homomórfico , pero el estado actual de la investigación está bastante lejos de proporcionar algo utilizable en esa área, por no hablar de eficiente.)

En la otra dirección: se supone que la máquina virtual debe estar contenida en el host, y no debe poder escapar de ella, para llegar a otra VM o al host en sí. Ahora, por supuesto, esa es la teoría, pero en la práctica se producen agujeros de seguridad .

    
respondido por el Thomas Pornin 18.09.2012 - 17:56
fuente
1

Tengo un poco de pensamiento diferente en esto y respuestas anteriores.

¿Es esto posible? Y si es posible, ¿es una amenaza?

Puede o no ser posible.

Técnicamente, debería ser posible ya que el programa de virtualización se está ejecutando dentro del sistema operativo que controlas. Por lo tanto, debería estar disponible la descarga de la memoria de una región particular de su sistema operativo. Y si es posible, creo que no es realmente una amenaza para la seguridad, ya que el host debe tener derechos de acceso total al entorno virtual que se ejecuta dentro de él.

Pero creo que en la práctica no es posible directamente (sin usar funciones como la instantánea proporcionada por su hipervisor). La razón de esto es que su hipervisor se ejecuta en ring -1 , que es más privilegio que su sistema operativo (específico del kernel) que es ring 0 . Por lo tanto, el hipervisor tiene permiso para denegar el acceso a la memoria directamente a su sistema operativo para una región particular de la memoria.

    
respondido por el shubham0d 03.06.2018 - 21:35
fuente

Lea otras preguntas en las etiquetas