¿Puede un rootkit de hipervisor habilitar la virtualización asistida por hardware cuando el BIOS la ha desactivado?

12

Hace poco estuve leyendo Introducción al hardware Rootkits de máquina virtual asistida (HVM) (PDF), y no estaba del todo claro acerca de las condiciones bajo las cuales el rootkit de hipervisor puede iniciar la virtualización. Si la virtualización está habilitada, todo está bien, pero ¿qué sucede si la virtualización está deshabilitada?

Específicamente, ¿Intel VT-x o AMD-v (VMX y SVM) admiten el desbloqueo y la habilitación de HAV después de que el BIOS (o un hipervisor posterior) se haya desactivado y bloqueado? No me interesa modificar la BIOS o cambiar su configuración, simplemente porque un hipervisor puede cambiar esta configuración.

(Si alguien se pregunta: No, no estoy planeando crear un rootkit malicioso: P)

    
pregunta Matthew Read 01.06.2012 - 22:49
fuente

3 respuestas

8

Para citar el Manual del software Intel, volumen 3c :

  

VMXON también está controlado por IA32_FEATURE_CONTROL MSR (MSR address 3AH).   Este MSR se borra a cero cuando se reinicia un procesador lógico. Los bits relevantes de la   MSR son:

     
  • El bit 0 es el bit de bloqueo. Si este bit es claro, VMXON causa una excepción de protección general. Si se establece el bit de bloqueo, WRMSR a este MSR causa una excepción de protección general; el MSR no se puede modificar hasta que se reinicie el encendido. El BIOS del sistema puede usar este bit para proporcionar una opción de configuración para que el BIOS deshabilite la compatibilidad con VMX. Para habilitar el soporte de VMX en una plataforma, el BIOS debe establecer el bit 1, el bit 2 o ambos (ver a continuación), así como el bit de bloqueo.
  •   
  • El bit 1 habilita VMXON en la operación SMX. Si este bit es claro, la ejecución de   VMXON en la operación SMX causa una excepción de protección general. Intenta establecer   este bit en los procesadores lógicos que no admiten la operación VMX (consulte la Sección 23.6) y la operación SMX (consulte el Capítulo 6, “Referencia de extensiones de modo más seguro”, en Intel® 64 e IA-32 Architectures Software Developer's Manual, Volume 2B) causa general -Excepciones de protección.
  •   
  • El bit 2 habilita VMXON fuera de la operación SMX. Si este bit es claro, la ejecución de VMXON fuera de la operación de SMX causa una excepción de protección general. Los intentos de establecer este bit en procesadores lógicos que no admiten la operación VMX (consulte la Sección 23.6) causan excepciones de protección general.
  •   

Interpretación, para aquellos que no están al tanto de lo que está pasando aquí:

  • MSR significa registro específico de la máquina y hace referencia a los registros / ajustes de configuración que se modifican entre las implementaciones de la arquitectura x86.
  • Algunos de estos se utilizan para configurar funciones para esa familia de procesadores.
  • VMXON es la instrucción (Intel) x86 para ingresar al modo de administración del hipervisor: el punto en el que obtiene acceso a las funciones de virtualización asistida por hardware, incluidas las tablas de páginas extendidas, etc. Aquí, crea máquinas virtuales y ejecuta vmenter y vmexit y así sucesivamente.
  • Una excepción de protección general es un controlador de excepciones integrado en el procesador que ocurre cuando haces algo que no puedes hacer. Los ejemplos incluirían la ejecución de instrucciones privilegiadas fuera de un nivel privilegiado, por ejemplo, la instrucción sidt como una aplicación de modo de usuario (anillo 3).

Como puede ver en la documentación, los BIOS tienen la opción de habilitar o deshabilitar VMX y también pueden usar el bit de bloqueo; si se establece el bit de bloqueo, cualquier intento de escribir para alterar la configuración causará una excepción de GP.

Así que realmente depende de cómo esos bits son configurados por su BIOS, en respuesta a su pregunta. Si el BIOS establece todos los bits en 000, entonces el software debería poder habilitar el hipervisor a través de WRMSR . Consulte la discusión aquí . Creo que WRMSR es una instrucción privilegiada, lo que significa que tendrías que hacerlo desde el núcleo. Sin embargo, una vez que se establece el bit de bloqueo, se requiere que reinicie (esencialmente, los circuitos comprobarán el estado del indicador de reinicio y luego lanzarán una excepción a su sistema operativo) que puede continuar como normal o fallar, dependiendo de si entiende la excepción (muy probablemente no).

    
respondido por el user2213 06.06.2012 - 19:53
fuente
1

Depende completamente de si el sistema operativo puede habilitar o no la virtualización. Si bien puedo estar equivocado, puedo imaginar que utilizando un syscall específico, puede volver a flashear un BIOS desde un sistema operativo en ejecución. Hay algunas placas base que lo permiten en Windows, existe la herramienta flashrom que permite eso en Linux.

Entonces, alguien podría volver a instalar el firmware para que la virtualización esté habilitada de forma predeterminada y esperar a que se reinicie.

En cuanto a si esto se puede hacer sin reiniciar, no lo sé. Recomendaría llevar la documentación de su procesador e intentar ver si hay información sobre esto.

Por supuesto, si puede volver a actualizar el firmware / BIOS, entonces puede colocar directamente un rootkit allí, y UEFI aborda este punto si no estoy equivocado (pero no de una manera que satisfaga a todos, especialmente en el lado del software libre).

    
respondido por el Misc 02.06.2012 - 00:44
fuente
-1

No, ya que la CPU proporciona el acceso del hipervisor al modo raíz debajo del anillo 0. Consulte la página 6 de este VMware papel blanco .

Consulte también este artículo de Linux KVM :

  

Si su hardware no tiene un IOMMU (soporte "Intel VT-d" en el caso de Intel - soporte "AMD I / O Virtualization Technology" en el caso de AMD), no podrá asignar dispositivos en KVM. Se realizaron algunos trabajos para permitir esto, pero el código nunca se convirtió en KVM, debido a varios problemas con el código. Por el momento, no parece que la asignación de dispositivos sin soporte de hardware se integre en KVM.

    
respondido por el Brian Villanueva 06.06.2012 - 19:48
fuente

Lea otras preguntas en las etiquetas