Xen , por definición, está virtualizado. Asume un código de invitado específico para el kernel del sistema operativo. No trata de ocultar la presencia de la virtualización, en realidad lo anuncia claramente. Esta no es la máquina virtual que estás buscando.
Un hipervisor completamente invisible es teóricamente factible, pero no es barato. El problema es con el tiempo. Un hipervisor funciona al ser capaz de interceptar algunas "operaciones sensibles", en particular relacionadas con el acceso a la memoria, y alterar su comportamiento. La alteración se realiza con software, que puede permanecer oculto de manera efectiva al bloquear algunos accesos de memoria, emulando en su lugar una ausencia de RAM. Sin embargo, tal intercepción toma un poco de tiempo: el manejo de un acceso a la memoria interceptada usará algunos ciclos de reloj adicionales sobre lo que haría una llamada no interceptada en "hardware en bruto". Dado que el código puede acceder a un reloj con precisión de ciclo de reloj (no precisión) a través del código de operación rdtsc
, se puede detectar la intercepción . A menos que también se intercepte el código de operación rdtsc
, para hacerlo "más lento".
En efecto, nuestro hipervisor invisible puede permanecer invisible solo al "ralentizar" la máquina virtual, de modo que obtenga suficientes "ciclos adicionales" ocultos para sus intercepciones. Así que el sistema operativo invitado debe:
- tampoco tienen acceso a una fuente de tiempo externa (y, si el sistema operativo invitado tiene alguna red, puede acceder a fuentes de tiempo externas);
- o cree que el hardware está cronometrado a una velocidad inferior a la que realmente ejecuta el hardware físico.
Como caso extremo, considere emulators . Los emuladores para sistemas más antiguos de la década de 1980 pueden tener una precisión de ciclo de reloj, es decir, hacen que la emulación sea tan perfecta que el código que se ejecuta en ella no es capaz de detectar que no se ejecuta en el hardware original. Pero solo pueden hacerlo lanzándole una gran cantidad de poder computacional; la sobrecarga es tremenda (estamos hablando de una pérdida de potencia informática de 10x o 20x). Además, emular los efectos de tiempo para un Atari ST es una tarea relativamente simple porque no hay caché en tal máquina.
La Blue Pill es una demostración de un llamado "hipervisor invisible", y generó un debate candente (como dicen, "con más calor que luz"), principalmente porque no hay igualdad entre las habilidades en la programación del sistema de ensamblaje y la capacidad para explicar las cosas a otras personas con pedagogía y serenidad. Sin embargo, la "píldora azul" debería ser detectable, aunque encontrar un código real que lo haga, publicado en la Web, podría ser un desafío.
Un punto interesante planteado por el desarrollador de la píldora azul es que se supone que los hipervisores deben convertirse en la corriente principal y "normal", por lo que la presencia de un hipervisor no debería, a largo plazo , indicar que la virtualización está ocurriendo. Es posible, e incluso probable, que los sistemas operativos futuros siempre activen un hipervisor en el momento del arranque, por lo que la detección de que la virtualización está implementada ya no indicará un posible juego sucio. Sin embargo, aún no hemos llegado a ese punto.