Icono del sitio Una al Día

Explicando el 0-day de VirtualBox

0day

La vulnerabilidad permite al malware escapar de la máquina virtual al equipo anfitrión.

El descubridor del fallo es el investigador de seguridad Sergey Zelenyuk, el cual, al estar en desacuerdo con la situación actual del mercado de Bug Bounty, decidió publicar el fallo.

Información referente al 0-day:

Introducción:

Antes de comenzar con la explicación de la vulnerabilidad, creo que hay que aclarar varios conceptos relacionados con el software vulnerado necesarios para el entendimiento total del fallo.

Un punto a destacar es que, normalmente, los descriptores de contexto se suministran a la tarjeta de red antes que los descriptores de datos, y en estos se debe especificar un tamaño máximo de paquete mayor que el tamaño del descriptor de datos.

Resumen de la vulnerabilidad:

Debido a la configuración de E1000 es posible, mediante el envío de una cadena de descriptores Tx específicos, conseguir un desbordamiento de búfer (comúnmente conocido como buffer overflow), el cual concluye en dos posibilidades (ambas usadas en la explotación):

Además, el exploit utilizado por Zelenyuk hace uso del LKM para cargar un sistema operativo invitado. Como se requiere escalada de privilegios para conseguir cargar el controlador en ambos sistemas, se usan de cadenas de explotación publicadas en el concurso Pwn2Own.

Estas cadenas explotan un navegador que abre un sitio web malicioso en el sistema operativo invitado, el cual consigue escapar de la sandbox para obtener acceso total al anillo 3 (nivel de aplicación).

Finalmente, y gracias a vulnerabilidades conocidas, consigue la escalada de privilegios para acceder al anillo 0 (nivel de kernel) donde está todo lo necesario para atacar a un hipervisor desde el sistema operativo invitado.

Vídeo de la prueba de concepto:

Recomendaciones:

En primer lugar, estar muy atentos a la espera de una nueva actualización por parte del equipo de VirtualBox que arregle este fallo.

En segundo lugar, se recomienda no utilizar la configuración de red especificada al comienzo del artículo para asegurar la seguridad del equipo anfitrión.

 

Más información:

Explicación del 0-day por parte de Sergey Zelenyuk:
https://github.com/MorteNoir1/virtualbox_e1000_0day/blob/master/README.md

Acerca de Daniel Púa

Daniel Púa Ha escrito 85 publicaciones.

Salir de la versión móvil