Se han publicado los detalles de una
grave
vulnerabilidad en todas las versiones de Windows que permite
elevar
privilegios en el sistema.
No existe parche disponible y el exploit
está al alcance de cualquiera, lo que lo convierte en un serio "0 day"
para Microsoft.
Tavis Ormandy, reputado investigador de seguridad
que ha encontrado numerosos fallos de seguridad en diferentes
programas, ha publicado un exploit para una vulnerabilidad que permite
elevar privilegios en Windows. Se trata de un fallo de diseño que
arrastran todos los Windows de 32 bits (basados en tecnología NT) desde
1993. Esto va desde el NT hasta Windows 7, pasando por 2000, 2003,
2008, XP y Vista.
El fallo reside en el soporte heredado de
aplicaciones de 16 bits. No se valida correctamente el cambio de
contexto y pila que se efectúa al llamar al manejador GP trap. Windows
comete algunos errores y asume incorrectamente que:
- Se requiere el privilegio SeTcbPrivilege para configurar un contexto VDM (Virtual DOS Machine) .
- Código en ring3 no puede instalar selectores de segmento de código arbitrarios. Usando el modo Virtual-8086, es posible.
- Código alojado en el ring3 (espacio de usuario) no puede falsificar un "trap frame".
Ormandy
consigue eludir estas cuestiones, y el resultado es que un usuario
puede realizar un cambio de contexto en el núcleo y ejecutar código
como SYSTEM, el máximo privilegio en el sistema.
Para eludir el
tercer punto, se necesita acceder a una dirección de memoria, que es
siempre la misma en todos los Windows menos Vista y Windows 7 que
realizan una "aleatorización" de la carga en memoria. Se supone que
esto protege de este tipo de ataques. Sin embargo, usando
NtQuerySystemInformation(), se puede llegar a calcular dónde está esa
dirección aunque sea diferente en cada inicio, con lo que la protección
ASLR (Address space layout randomization) también se ve eludida.
Ormandy
avisó a Microsoft en junio de 2009, y poco después confirmaron el
problema. Harto de que no publicasen una solución (que considera no muy
compleja), ha decidido hacer público el fallo. Él mismo entiende que
esta vulnerabilidad afecta de forma más seria a empresas y
corporaciones que mantienen a sus usuarios con privilegios limitados.
Por desgracia, la mayoría de usuarios caseros utilizan ya la cuenta de
administrador en su Windows (no tan poderosa como SYSTEM, pero
equivalente a efectos prácticos) para tareas cotidianas, con lo que la
elevación de privilegios no suele ser un requisito en los ataques.
El
exploit ha sido probado y funciona a la perfección. La buena noticia es
que es relativamente sencillo mitigar el problema. Incluso ha publicado
vídeos en Youtube de cómo hacerlo, destinados principalmente a
administradores. Evitar el fallo implica deshabilitar el soporte para
aplicaciones de 16 bits, que se supone no será ningún problema para la
mayoría de usuarios.
Los pasos son los siguientes:
Desde la
consola de políticas (gpedit.msc) abrir "Configuración de equipo",
"Plantillas administrativas", "Componentes de Windows", "Compatibilidad
de aplicación" y habilitar la política "Impedir el acceso a
aplicaciones de 16 bits". Es importante asegurarse de que es aplicada a
los sistemas que dependen del controlador de dominio, forzando una
actualización de políticas.
Los vídeos publicados con cómo
realizar esto (en inglés) desde la consola de políticas y aplicarlo a
todos los clientes de un Directorio Activo están disponibles desde:
Este
es un grave revés para Microsoft. Si los administradores quieren
mantener su red de usuarios controladas hasta que exista parche
oficial, se recomienda aplicar esta solución temporal lo antes posible.
Más Información:
Microsoft Windows NT #GP Trap Handler Allows Users to Switch Kernel Stack
http://lists.grok.org.uk/pipermail/full-disclosure/2010-January/072549.html
Autor:
Sergio de los Santos
Fuente:
Hispasec