¿Puede la vulnerabilidad de seguridad del espectro estar en una máquina virtual?

13

¿Es posible que una máquina virtual como VirtualBox tenga la vulnerabilidad de seguridad "espectro"? Creo que la máquina virtual tal vez realiza una ejecución fuera de orden, pero en mi opinión no es posible mirar el caché para leer el resultado.

¿Hay alguna explicación de cómo es posible leer el caché de una CPU virtual?


fuente
44
Sí, una pequeña investigación habría confirmado que VMWare ha lanzado parches para abordar Spectre y Meltdown. El SO invitado debe ser parcheado, además, al hipervisor real (ambos tipos)
Ramhound
Depende del nivel de virtualización, diría. Si está simulando una CPU virtual, entonces probablemente esté a salvo. Pero eso no es lo que hacen las máquinas virtuales modernas.
Bergi
¿Hay alguna explicación de cómo es posible leer el caché de una CPU virtual?
1
@jms detalles están en el post que canónica vinculado en mi respuesta:Spectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
Mokubai
1
La virtualización de @jms solo es rápida porque utiliza la CPU física con la menor abstracción posible y depende del hardware de la CPU para proporcionar aislamiento y abstracción. Cosas como qemuhacer una emulación que sería más segura ya que no es una CPU de hardware , pero es mucho más lenta y diferente de la virtualización.
Mokubai

Respuestas:

14

Sí, Spectre puede cruzar los límites de host / invitado, invitado / host e invitado / invitado porque este es un defecto de nivel de CPU que significa que se puede filtrar información potencialmente confidencial a través de cualquier cosa que se ejecute en un núcleo de CPU.

La mayoría de las noticias en Internet hablan de los proveedores de la nube más afectados por esto, ya que tienen grupos masivos de sistemas que están virtualizados y podrían ser abusados ​​para filtrar información confidencial.

La mayoría de los grandes proveedores ya deberían haber sido reparados contra las fallas, lo mejor que pueden ser, pero este será un problema que vivirá con nosotros por algún tiempo.

Security.SE tiene preguntas y respuestas canónicas al respecto y menciona las máquinas virtuales:

Estoy ejecutando una máquina virtual / contenedores, ¿en qué medida soy vulnerable?

Según la respuesta de Steffen Ullrich

  • Los ataques de fusión no cruzan las máquinas virtuales, solo filtran la memoria del núcleo a los procesos locales.
  • Specter puede trabajar en máquinas virtuales.

Además, desde Steffen nuevamente , Meltdown and Spectre trabaja con contenedores, ya que los contenedores se basan en el núcleo del host.

Las máquinas virtuales usan la CPU real en su sistema con algunas instrucciones privilegiadas atrapadas y que pueden redirigirse. Utiliza los mismos cachés e instrucciones que el host. Esencialmente es solo otra capa dentro de la CPU física en su sistema.

La virtualización solo es rápida porque utiliza la CPU física con la menor abstracción posible y depende del hardware de la CPU para proporcionar aislamiento. Cosas como qemu pueden hacer una emulación que sería más segura ya que no es una CPU de hardware, pero es mucho más lenta y diferente de la virtualización.

Desde la publicación canónica Security.se nuevamente:

Specter trabaja en un nivel diferente y no permite el acceso a los datos del espacio del núcleo desde el espacio del usuario. En este ataque, el atacante engaña la ejecución especulativa para ejecutar instrucciones predictivas erróneamente. En pocas palabras, el predictor se ve obligado a predecir un resultado de rama específico (si -> verdadero), que resulta en solicitar un acceso a la memoria fuera del límite que el proceso de la víctima normalmente no habría solicitado, lo que resulta en una ejecución especulativa incorrecta. Luego, por el canal lateral, recupera el valor de esta memoria. De esta manera, la memoria que pertenece al proceso de la víctima se filtra al proceso malicioso.

Entonces, debido a que la VM se ejecuta en el hardware real de la CPU y todo lo que necesita hacer es ejecutar un ciclo particular para "entrenar" el motor de ejecución especulativo. Luego, puede usar el tiempo preciso para observar los cachés para patrones particulares de acceso indicativos del proceso de host o invitado (u otra VM) que está buscando explotar.

De esta manera, significa que una máquina es explotable en todas las direcciones. De host a VM, de VM a host, y de VM a VM.

Sí, de ninguna manera es fácil y es algo difícil de lograr, ya que el núcleo de la CPU de VM podría cambiar a voluntad del host y el host también podría programar tareas en diferentes núcleos, pero durante un largo período de tiempo suficiente información podría filtrarse para entregar una clave secreta a algún sistema o cuenta importante. Dado el tiempo suficiente y un software sigiloso adecuado, todo está potencialmente abierto.

Si desea una máquina virtual "segura", debe garantizar que sus núcleos estén aislados. Las únicas formas reales de bloquear este ataque serían "obligar" al host y a las máquinas virtuales a usar solo ciertos núcleos para que nunca se ejecuten en el mismo hardware, pero esto conduciría a un aumento efectivo en el costo, ya que no podría tener tantas máquinas virtuales en un host determinado. Nunca sería capaz de ejecutar más máquinas virtuales de las que tiene núcleos disponibles, que es algo que esperaría que se hiciera en servidores de "baja carga", ya que muchos sistemas permanecen inactivos durante el 90% de su vida útil.

Mokubai
fuente
2
Creo que interpretó la pregunta como "si la CPU host se ve afectada, ¿también se verá afectada la VM?" Según tengo entendido la pregunta, pregunta "si la CPU del host no se ve afectada, ¿la VM todavía puede verse afectada?" ¿Podrías aclarar eso?
AndreKR
1
@AndreKR: actualmente todas las CPU fuera de orden de ejecución están afectadas por Spectre; solo con soluciones de software puede hacer que un sistema sea seguro (y, por lo tanto, la VM debería preocuparse por esto, aunque un hipervisor puede aislar a los invitados entre sí si la CPU proporciona las instalaciones, por ejemplo, las cosas IBRS de Intel). Pero en una CPU en orden sin ejecución especulativa, no pueden existir vulnerabilidades Spectre de ningún tipo entre dos piezas de software. La esencia de Spectre es provocar la ejecución especulativa de algo que pone los datos secretos en un estado microarquitectónico; Las CPU en orden no lo hacen.
Peter Cordes
Lo más interesante no es la ejecución especulativa. Lo más interesante es cómo un proceso puede descubrir qué hay en el caché, incluso en una máquina virtual.
@jms los ataques de canal lateral disponibles se facilitan y se hacen útiles mediante la ejecución especulativa. Es posible que el proceso no pueda leer directamente las líneas de caché, pero la ejecución especulativa puede filtrar información al hacer cálculos que colocan valores en la caché que pueden ser detectados o inferidos por ataques de tiempo. La sección 4 del informe técnico
Mokubai
0

gem5

Si está interesado en estudiar / reproducir vulnerabilidades únicamente con la emulación, sin usar la CPU host, no creo que QEMU sea lo suficientemente detallado como para observarlas, ya que no simula la canalización de la CPU.

Sin embargo, gem5 se utiliza para estimar el rendimiento del sistema en investigación y desarrollo, y simula suficientes componentes internos de la CPU para que pueda observar a Spectre en un entorno completamente limpio y controlado.

Se ha publicado una demo x86_64 con visualización en: http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

La desventaja de gem5 es que es mucho más lento que QEMU, la simulación es más detallada.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente