Técnicamente pueden, pero solo lo hacen bajo ciertas circunstancias.
Un hipervisor malicioso puede manipular al huésped a voluntad. Un invitado virtualizado permite que el hipervisor atrape ciertas instrucciones, y difiere la acción al mismo hipervisor. Si activara un sistema operativo invitado en una máquina Windows comprometida, sería capaz de comprometer al invitado. Desde la perspectiva del invitado, el hipervisor se ejecuta en lo que se ha apodado anillo -1. La implicación es que es incluso más bajo y más privilegiado que el anillo 0, lo cual es cierto (aunque no se implementa como un anillo de protección real, pero el efecto es aproximadamente el mismo). Una tecnología llamada SGX en procesadores más nuevos puede ejecutar ciertos aspectos de una máquina virtual de tal manera que el hipervisor no pueda manipularla, pero no creo que haya implementaciones suficientes.
Entonces, Windows tiene absolutamente esta capacidad, pero ¿Windows realmente hace esta recopilación de forma predeterminada? Una especie de Si bien no manipularán a su invitado ni cargarán un montón de detalles privados relacionados con él, los volcados de fallos relacionados con la virtualización pueden cargarse en Microsoft, y esta información detallada puede contener datos confidenciales del invitado en ejecución. Puede evitar esto desactivando el informe de errores .
¡Advertencia! Detalles técnicos por delante!
Explico cómo funciona la virtualización en una respuesta a otra pregunta . Podría ser una buena idea leer esa respuesta para comprender exactamente qué puede hacer un hipervisor al huésped y qué no. Se proporciona una vista simplificada pero fácil de comprender en diapositivas para un documento de conferencia sobre virtualización:
En la práctica, la mayoría de las veces, el hipervisor simplemente permite que el invitado se ejecute en la CPU y la memoria reales, sin saber qué está haciendo el invitado. [...] Si el invitado está ejecutando una instrucción de ensamblaje "interesante", entonces el hardware la atrapa y el hipervisor emula la instrucción cuidadosamente.
Algunas instrucciones se pueden configurar para atrapar. Otros atrapan incondicionalmente, como out
, que se usa para comunicarse con otro hardware y hacer cosas como apagar el sistema. Otros, como mov
, normalmente no atrapan y se ejecutarán sin que el host o el hipervisor puedan influenciarlos directamente. Cuando una instrucción atrapa, el control se devuelve temporalmente al hipervisor. Puede elegir negar la instrucción, ejecutarla directamente o emularla. Desde la perspectiva del invitado, una instrucción que queda atrapada simplemente toma un poco más de tiempo para retirarse. Desde la perspectiva del host, la VM es solo una instrucción muy lenta que solo se devuelve cuando el código del huésped está atrapado y el hipervisor necesita tomar una decisión ejecutiva, después de lo cual se reanuda la VM.