Usando una máquina virtual como un búfer entre el dispositivo USB y el sistema operativo

2

Me dirigieron aquí desde Unix & Sitio de Linux. He revisado algunas de las preguntas relacionadas, pero parece que les preocupa más si un SO huésped puede acceder al SO host de alguna manera. Como no parece muy probable, le diré acerca de mis requisitos.

Cuando el usuario coloca un lápiz de memoria USB en un puerto USB, el sistema debería descargar automáticamente los datos a una máquina virtual, realizar un análisis, análisis de virus, y qué no. Después de esto, la carga útil debería estar disponible para el sistema operativo host.

De antemano, el sistema operativo invitado debe estar completamente aislado del host, por lo que no hay acceso desde la red, no hay unidades asignadas, nada. Pero después de que el procesamiento se realice con éxito, el host deberá encontrar alguna forma de obtener acceso a la carga útil. Además de destruir la máquina virtual.

¿Tiene ideas sobre cómo implementar este tipo de cosas, conoce alguna solución existente o cualquier otra información?

Actualización: Entonces, esta parece ser una solución factible (y no completamente insana), pero hay un problema más. Cómo implementar realmente la comunicación entre el SO invitado y el SO host.

La solución más obvia es un enfoque basado en la red, pero debido a los requisitos de aislamiento, esto no se puede considerar realmente. Entonces, ¿qué otros enfoques hay?

    
pregunta Kayaman 25.09.2013 - 10:48
fuente

2 respuestas

1

Creo que esta solución de seguridad podría funcionar si se implementa correctamente.

Claramente, el sistema operativo host podría anular al invitado en cualquier momento, pero en este caso están trabajando juntos. El caso general es que el demonio de montaje automático necesita trabajar con el sistema operativo invitado para verificar el dispositivo. Cada administrador de ventanas tendrá su propia forma de auto-montaje de dispositivos. Es posible desactivar esta función y reemplazarla con un daemon de montaje automático que puede enganchar. En este gancho desea realizar una acción antes de montar el dispositivo. (Creo que Halevt podría ser la mejor opción, pero deberías mirar los otros demonios de montaje automático listados)

    
respondido por el rook 25.09.2013 - 18:34
fuente
1

Debes asegurarte de las siguientes propiedades:

  • el software de la máquina virtual y todo en lo que se basa (sistema operativo host, hardware) está libre de errores;
  • la máquina virtual está configurada para el aislamiento: no se comparte el disco, no se comparte el portapapeles, no hay conexión de red, ...;
  • no hay ningún proceso en el host que pueda cooperar con el software malicioso en el invitado;
  • no hay espionaje físico hostil en el host.

Suponiendo estas condiciones, el software del invitado está aislado. Puede fisgonear en el host a través de un canal lateral (principalmente a través de mediciones de tiempo), pero no podrá informar de ello.

Para mantener el aislamiento, provea una nueva máquina virtual donde el contenido del dispositivo de memoria esté disponible para el huésped. No tiene que ser un acceso directo a la tarjeta de memoria, puede hacer una copia al almacenamiento interno (pero también puede hacer que la tarjeta de memoria esté disponible para el invitado si lo desea).

Tenga en cuenta que lo que parece una tarjeta de memoria puede no ser una tarjeta de memoria. Por ejemplo, hay dispositivos que parecen una memoria USB, pero en realidad contienen un concentrador y no solo una memoria, sino un dispositivo que se declara a sí mismo como un teclado o como un puente de USB a Firewire.

De su descripción no queda claro si la carga útil que desea que finalmente esté disponible para el invitado son datos almacenados en la tarjeta de memoria o datos calculados en el invitado. Si es lo último, puede hacer que el host lea los datos del invitado sin pasar por el software del invitado. Haga arreglos para que el invitado escriba en un disco sin formato, o use el soporte del sistema de archivos invitado como el que proporciona libguestfs . Tenga en cuenta que el procesamiento realizado por el invitado puede verse afectado por la ejecución en una máquina virtual, por ejemplo, el malware sofisticado tiende a detectar que se está ejecutando en una máquina virtual y luego no se revela.

    
respondido por el Gilles 26.09.2013 - 17:37
fuente

Lea otras preguntas en las etiquetas