Protección de claves / contraseñas en hardware virtual (XEN, KVM, VMWare, etc.)

15

¿Hay alguna forma razonable de proteger los datos en hardware virtual? Lo que quiero decir con "hardware virtual" son los diversos sistemas alojados que se pueden alquilar de varios hosters en línea, que se ejecutan sobre XEN, KVM, VMWare ESXi, etc.

Con el hardware dedicado real, uno puede asumir de forma segura que el sistema en sí no se ha comprometido si:

  1. se puede asumir que el software es seguro, es decir, se puede suponer que el software que se ejecuta en esa máquina (ssh, servidor web, etc.) no ha sido explotado o forzado por la fuerza bruta
  2. se puede asumir que el hardware no está comprometido, es decir, la máquina no se ha desconectado, por lo que un atacante podría haber cambiado partes esenciales de hardware como HDDs / RAM / etc con las comprometidas. (Sí, sé de hardware intercambiable en caliente, pero supongamos que dejará suficientes rastros, ya sea en registros o mal funcionamiento del software, si no lo hace una autoridad legítima).

Pero con el hardware virtual, la suposición de que el hardware no se ha comprometido ya no se mantiene, porque el proveedor de servicios puede pausar, copiar y reiniciar la máquina a voluntad, sin que se reinicie ni se desconecte. Además, el proveedor de servicios tiene acceso directo a la memoria RAM y los discos de toda la máquina virtual, mientras aún se está ejecutando.

Con un poco de esfuerzo, el proveedor de servicios podría incluso cambiar los archivos authorized_keys o / etc / passwd en el sistema para obtener acceso (raíz) al mismo y, por lo tanto, posiblemente, incluso poder ver el contenido de las particiones encriptadas que están actualmente montado.

Dadas estas vulnerabilidades o posibles ataques, mis preguntas ahora son:

  1. ¿Qué tan realistas son estas vulnerabilidades, son una amenaza real o simplemente "ciencia ficción"? ¿Hay algo que los haga poco prácticos en realidad? ¿Los proveedores de software de VM (Citrix, VMWare, etc.) implementan algún mecanismo de seguridad que dificulte estos ataques? (¿Hay algo que puedan hacer para que esto sea más difícil, aparte de la seguridad por oscuridad)? ¿O los proveedores de máquinas virtuales pueden incluso proporcionar herramientas a los hosters (que, después de todo, son sus clientes directos) que facilitan estos ataques?

  2. ¿Hay alguna forma efectiva en que un sistema de invitado pueda protegerse a sí mismo oa los datos en la RAM y en los discos de este tipo de ataques? ¿Los enfoques informáticos confiables (código firmado, etc.) serían de alguna ayuda? Sé sobre DEP y ASLR, pero eso realmente no impedirá que el host siga leyendo cada bit de memoria disponible. También creo que el cifrado RAM está fuera de discusión con el hardware / VM x86 convencional ... ya que eso ya no sería la memoria de "acceso aleatorio".

  3. ¿Ha habido alguna investigación sobre esto? Me sorprende lo poco que se discute sobre este tema. ¿Ya todo es tan obvio o imposible de resolver, o hay muy poco interés todavía?

pregunta Dexter 08.03.2012 - 14:37
fuente

2 respuestas

5

A mí me parece claro, solo considerando las hipótesis, que un servidor virtual no tiene una protección técnica práctica del administrador del host real.

Intentaré ser específico. No tiene que ser impráctico para descifrar un servidor virtual, dado el control del host real. Aquí está el tipo de estrategia que me imagino. Desmonte el software del host de la máquina virtual y localice el controlador del teclado virtual. Luego modifique, no necesariamente el software del host de VM, sino quizás una tabla de despacho en el kernel del sistema operativo. De esa manera, se podría hacer una secuencia de llamadas al sistema que es característica del controlador del teclado virtual para activar un registrador para las teclas de entrada virtuales. El resultado es un keylogger para el servidor virtual que no se puede detectar claramente desde el lado virtual.

Un sistema host que evitaría este tipo de manipulación probablemente no funcionaría muy bien. Ya es bastante difícil depurar y monitorear el software sin agregar intencionalmente obstáculos para los analistas.

    
respondido por el minopret 09.03.2012 - 07:27
fuente
4

En cuanto a los recursos, estoy seguro de que una búsqueda en Google / búsqueda académica puede dar muchos resultados sobre las implicaciones teóricas y prácticas de la virtualización en la seguridad. He aquí uno que encontré (pero hay muchos más): Pautas completas de seguridad de virtualización del NIST

Sí, la virtualización abre una gran cantidad de vectores de ataque que son menos accesibles (pero aún así posibles) cuando se ejecuta directamente en el hardware. Sin embargo, se podrían decir los mismos principios acerca de escribir todo el código para ejecutar el hardware, en lugar de usar un sistema operativo existente. Realice su propio acceso de memoria de bajo nivel y administración de E / S y procesos para evitar la posibilidad de que algún parche del kernel o un troyano tenga acceso al mismo segmento de memoria que tiene su programa.

Por supuesto, también hay una cuestión de confianza. Si no puedes confiar en tu proveedor de alojamiento, tampoco les confiaré mi hardware. ¿Confía usted en su sistema operativo? ¿Confía en todos sus códigos y módulos de aplicación de terceros?

Por último, y lo más importante en mi opinión, como casi todo en la vida, es una compensación entre su riesgo y sus beneficios. ¿Desea todos los beneficios de la virtualización y el alojamiento virtual "en la nube"? (iniciando servidores virtuales de forma programática, escalando servidores hacia arriba / abajo, tomando instantáneas sobre la marcha, clonando máquinas virtuales, teniendo un acceso simple desde la consola a cada servidor sin la necesidad de hardware adicional, agregando interfaces de red virtuales para crear configuraciones de red complejas para nombrar unos pocos) ¿O prefieres tener menos flexibilidad pero más seguridad *? La elección es por supuesto suya. Y depende de su percepción de riesgo frente a beneficio.

* Algunos dirían que la virtualización puede ayudar a aumentar su disponibilidad , que por supuesto también es una parte importante de la seguridad.

    
respondido por el Yoav Aner 09.03.2012 - 09:51
fuente

Lea otras preguntas en las etiquetas