Vieja Vulnerabilidad en el Kernel de Windows

Cuando leí los primeros reportes pensé que se trataba de hoax, por lo que no hice caso al principio. Mas sin embargo resulta que es verdad. Se trata de una vulnerabilidad hecha pública el martes pasado en seclists.org y firmado por Tavis Ormandy, quien además facilita un exploit. Por su parte Microsoft ha publicado el aviso de seguridad al respecto:

Microsoft Security Advisory (979682)
Vulnerability in Windows Kernel Could Allow Elevation of Privilege

La vulnerabilidad se encuentra específicamente en el subsistema Virtual DOS Machine de Windows NT (NTVDM). Por lo que dicha vulnerabilidad afecta a toda la familia de sistemas operativos NT de 32 bits, desde el extinto NT 3.5, pasando por Windows 2000 y hasta el reciente Windows 7, estando exentos sólo los sistemas de 64-bits. De hecho eso es lo que ha incendiado la web, pero sobretodo porque el problema tiene su buena cantidad de años.

A su favor MS afirma que la vulnerabilidad es difícil de explotar, ya que requiere que sea explotada con una cuenta local y no puede hacerse remotamente. Empero no obstante la mayoría de los usuarios no son muy cuidadosos al abrir/ejecutar archivos, por lo que fácilmente podrían abrir/ejecutar un archivo adjunto o bien descargado desde las redes P2P.

En el aviso MS señala que aún esta bajo investigación por lo que aún no existe parche (fix) para mitigar la vulnerabilidad. Por lo mientras solo recomiendan “bloquear” la ejecución de programas de 16 bits mediante el deshabilitado del subsistema NTVDM vía la consola de políticas de grupo (gpedit.msc), el cual no obstante no está presente en las ediciones “básicas” (aka Home y Started) de Windows XP/Vista/7. Por lo que ciertos blogs proponen la siguiente medida alterna, la cual he comprobado y (aparentemente) funciona:

1. Cree un archivo de texto con la extensión *.reg, por ejemplo: “VDMDisallowed.reg” (y asegúrese que tiene dicha extensión y no *.reg.txt).

2. Introduzca en el archivo el siguiente texto:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat]
"VDMDisallowed"=dword:00000001

3. Guarde el archivo.

4. De click derecho sobre el archivo y en el menú contextual elija la opción “Combinar”.

Nota: Para poder combinar el archivo con el Registro de Windows se requieren privilegios de administrador. Si no sabe de que hablo pregunte a su administrador local o su amigo geek pro-MS mas cercano.

5. De Aceptar en el cuadro de dialogo que aparece.

Eso es todo, de ahora en adelante sus viejos programas y juegos de MS-DOS/Win16 ya no se ejecutarán mas, al menos hasta que MS publique el parche que solucione correctamente el problema.

Para volver habilitar VDM cree otro archivo *.reg (“VDMAllowed.reg”) con lo siguiente:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat]
"VDMDisallowed"=dword:00000000

Guarde el archivo y combínelo.

ADVERTENCIA Y RENUNCIA: La manipulación del Registro de Windows puede llegar a ocasionar efectos adversos al sistema si no se realiza adecuadamente. Tenga en cuenta que si lo realiza es bajo su propio riesgo, por lo que no me hago responsable por cualquier daño que pueda sufrir su sistema/equipo y/o persona. Tampoco por el mal uso que se le pueda dar a ésta información.