El bug “Intel SYSRET fault” y la importancia de las comunidades

La más reciente aparición de un intel sysret bug en el sub-sistema de llamadas que los CPUs Intel ejecutan a 64 bits nos demuestra las ventajas de la colaboración y de los proyectos de software libre, ¿aún siguen teniendo dudas?.-

El error

El bug afecta una serie de llamadas que sistemas de 64 bits con chips Intel realizan al CPU, un script podría causar un fallo de segmentación que podría aprovechar un atacante para escalar privilegios en el equipo atacado, es más, el ataque podría afectar a varios sistemas de virtualización (salvo KVM) pues si el usuario tiene privilegios administrativos en una VM (invitado) podría usar el bug para acceder cómo administrador (a través de los propios anillos de seguridad del O.S) al sistema operativo host.

El bug afecta a todas las versiones de 64 bits de Microsoft Windows (incluyendo Windows 2008 y Windows 7), a todas las versiones derivadas de freeBSD (incluyendo Darwin, Debian KfreeBSD y Mac OSX) y netBSD.

Además, el bug afecta a esos sistemas virtualizados ejecutados sobre virtualizadores como Xen o VMWare (con su microkernel basado en linux 2.4) ya que el Xen no puede determinar (por el fallo del CPU) si la instrucción con privilegios escalados viene del dom0 (host) o del invitado (guest).

¿Cómo afecta a Linux?

El bug, aunque la gente no lo crea, no afecta a Linux, este bug (en su versión de escalada de privilegios en un sistema no-virtualizado 64bits) fué notificado y cerrada la brecha tan atrás como 2006, núcleos linux desde la versión 2.6.21 ya tienen un parche de seguridad para prevenir esa escalada de privilegios local.

Lo más interesante, es que Intel hasta el momento, para escaladas locales, sólo ha liberado microcodes correctivos para sistemas Linux corriendo cómo hipervisores.-

Y ¿por qué resuena ahora?

Pues porque un hacker a descubierto una nueva versión del error que además, permite qué desde esos sistemas (guest) Windows, FreeBSD o netBSD afecten a un sistema virtualizado, es decir, Xen está comprometido con el fallo, siempre y cuándo los sistemas que estés corriendo, sean sistemas “con el error”.

En resumen:

* El error NO afecta a Linux nativos
* El error NO afecta a Xen, si sólo se usa para virtualizar GNU/Linux
* El error SOLO afecta a Xen, si el atacante tiene privilegios administrativos en una VM comprometida y ejecuta el ataque para irrumpir en el sistema host (dom0), si confías en las máquinas 64 bits virtualizadas, obvie el error.
* SOLO afecta si las máquinas virtuales (VM) son a 64 bits en modo hipervirtualizado (Xen)
* Como KVM comparte el parche Linux CVE-2006-0744, NO se ve afectado

Notas curiosas

Aunque desde 2006 se había notificado el fallo, no es sino hasta el 1 de mayo de 2012, cuando al descubrirse que afecta también a entornos virtualizados, que Intel en conjunto con desarrolladores deciden cerrar la brecha y notifica a los diversos fabricantes y desarrolladores de sistemas operativos.
El proyecto Debian fué notificado del fallo en Xen el 2 de mayo de 2012 en el bug-tracking system, la brecha en el mainstream fué cerrada el mismo día (¡hell yeah!, the bazaar collaboration strikes back!), el bug para wheezy fué cerrado hace 2 semanas y el parche para Debian Security (squeeze estable), hace unos 5 días; en comparación, Microsoft fué notificado el día 1 de mayo y lanzó la actualización con la correción a través de Windows Update el día de hoy (18 de Junio), ¿alguna diferencia de tiempo?.
Aprovechando los parches liberados por Debian y Suse, el proyecto Xen cerró el bug en su código principal el 13 de Junio de 2012 (mucho antes que Microsoft, por cierto).
Desconozco si mac OSX “mountain lion” (recientemen liberado y afectado por el bug) realizará un parche de seguridad prontamente, aún no se han pronunciado.
Red Hat se ve comprometido (al igual que centOS) ya que utilizan una versión “vieja” de linux (2.6.18) y de Xen (3.2), creo que ya notificaron parches de seguridad para dichos sistemas estables.
No se nombra en el “release” del security pack de Microsoft a Windows XP 64 bits ni a Windows 2000 64 bits, al parecer, dicho bug se mantendrá abierto a menos que Microsoft decida realizar un “out-of-support service pack” para dichos sistemas.
El bug se debe a una implementación errónea por parte de Intel, de la directiva amd64 (como la instrucción SYSRET), es decir, si corres una plataforma virtualizada sobre hardware AMD, no tienes de qué preocuparte.

About these ads

Una respuesta a “El bug “Intel SYSRET fault” y la importancia de las comunidades

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s