lunes, 7 de septiembre de 2009

"Pantallazo azul" (BSOD) en Windows Vista y 7 a través de unidades compartidas

Laurent Gaffié ha detectado un fallo de seguridad en Windows Vista que podría permitir a un atacante provocar un BSOD (pantallazo azul, una denegación de servicio) con solo enviar algunos paquetes de red manipulados a una máquina que tenga activos los servicios de compartición de archivos (protocolo SMB).

El fallo (incomprensiblemente simple) está en el intérprete de las cabeceras SMB, concretamente en el driver srv2.sys. Como los controladores operan en el "ring0", la capa de abstracción del sistema operativo más cercana al hardware (en contraste con el "ring3", la capa de usuario que no interactúa directamente con él) un fallo en cualquier driver provoca que el sistema se bloquee por completo, al no poder manejar la excepción correctamente. Se trata del temido pantallazo azul, o BSOD. Los Windows anteriores a Windows 2000 no realizaban esta separación de seguridad entre capas, por lo que todo operaba en el mismo espacio de memoria y los fallos en el espacio de usuario podían causar un bloqueo total del sistema. De ahí que los pantallazos azules fuesen mucho más comunes en Windows 9x y Me.

El ataque es tan sencillo que recuerda a los "pings de la muerte" que hicieron estragos a finales de los 90 en los sistemas Windows. Contenían un fallo en la pila TCP que hacía que, si se enviaba un ping al sistema especialmente manipulado (simplemente especificando con un parámetro, por ejemplo, un tamaño mayor del paquete) se podía hacer que el sistema dejara de responder. Esto, unido a la carencia de cortafuegos del sistema, a que en aquellos momentos las conexiones se realizaban a través de módem (que carecía de protección por cortafuegos o NAT) y el hecho de no existir servicio de actualización automático del sistema, hicieron muy popular el ataque.

Este fallo en el protocolo SMBv2 de compartición de archivos requiere igualmente del envío de una sencilla secuencia de paquetes SMB (al puerto 445) al sistema víctima con las cabeceras manipuladas. El truco está en enviar un carácter "&" en el campo "Process Id High" de las cabeceras SMBv2. Esto provoca una excepción en srv2.sys que provoca el pantallazo azul. El exploit es público y realmente sencillo.

Vista mantiene el cortafuegos activo por defecto para su perfil "público", y esto mitiga el problema. Pero todo depende del perfil. Si el usuario usa un perfil de cortafuegos (ya sea de dominio, o el perfil privado) en el que permite las conexiones a sus unidades compartidas (puerto 445, normalmente abierto en las redes locales) será vulnerable. No es necesario que comparta realmente una unidad, solo que el protocolo SMB esté activo y preparado para compartir en su sistema. Esto puede resultar especialmente grave en redes internas.

No existe parche oficial disponible. Se recomienda filtrar el puerto 445 (y los implicados también en la compartición de ficheros 137-139) a través de cortafuegos. También es posible detener el servicio "Servidor" del sistema (aunque se puede llegar a perder funcionalidad). Otra contramedida posible es desactivar la casilla "compartir archivos e impresoras" que aparece en las propiedades de las interfaces de red.

Aunque el ataque no permite ejecución de código y es poco viable que pueda propagarse por la red pública, sí que puede resultar más que molesto en redes internas donde los usuarios normalmente mantienen reglas de cortafuegos mucho más relajadas. ¿Vuelven los tiempos del "ping de la muerte"?.


Sergio de los Santos
ssantos@hispasec.com


Más información:

Windows Vista/7 : SMB2.0 NEGOTIATE PROTOCOL REQUEST Remote B.S.O.D.
http://g-laurent.blogspot.com/2009/09/windows-vista7-smb20-negotiate-protocol.html

No hay comentarios:

Publicar un comentario en la entrada