domingo, 17 de mayo de 2009

Grave vulnerabilidad en IIS. De vuelta a fallos de principios de década


Desde hace unos días, estamos viviendo una especie de desafortunada vuelta a principios de esta década por culpa de un grave fallo de seguridad en Internet Information Server, el servidor web de Microsoft. Se ha descubierto una vulnerabilidad "como las de antes" y, lo peor, aprovechando fallos y problemas que parecían pertenecer ya al pasado, como de otro tiempo. Al parecer, el fallo está disparando el número de "desfiguraciones" (defaces) en servidores web con IIS en los últimos días.

A cualquiera que esté al tanto de las noticias sobre seguridad le sonará que las palabras IIS, WebDAV, unicode y la cabecera "Translate:f" (parte del protocolo WebDAV) son términos que juntos, no han traído nunca nada bueno al servidor de Microsoft en los últimos años. La vulnerabilidad que acaba de ser descubierta combina todos esos elementos. Se ha encontrado un fallo en IIS 6.x a la hora de procesar peticiones http especialmente manipuladas con la cabecera "Translate:f" y con caracteres Unicode. Esto puede permitir a un atacante eludir la autenticación (y subir ficheros si lo permiten los permisos) al disparar un problema de validación en WebDAV.

Vamos a dar un pequeño repaso a las vulnerabilidades que se basaban en alguno de los elementos que Microsoft nunca manejó (ni maneja, por lo visto) demasiado bien.

Antecedentes (1999)

En 1999 se descubrió un fallo clásico en IIS. Introduciendo un punto al final de los archivos ASP en servidores web IIS 3.0 se podía visualizar el código fuente del archivo. Por ejemplo:

http://servidor.iis.afectado/ejemplo.asp.

La actualización desarrollada para solventar este problema cumplió su trabajo y la "vulnerabilidad del punto" desapareció. Pero el parche obvió la representación hexadecimal del carácter "." (0x2e), por lo que sustituyéndolo en la URL de esta forma:

http://www.direccion.com/code/ejemplo.asp0x2e

aún se podía descargar el código fuente del archivo ASP. Un parche para el parche solucionó el problema.

Antecedentes (2000)

Se descubrió un error relacionado con el protocolo estándar de Internet WebDAV (Web Distributed Authoring and Versioning) mayoritariamente usado por Microsoft en IIS (venía activado por defecto). WebDAV se trata de un conjunto de extensiones de HTTP que proporciona el estándar para editar y manejar ficheros y atributos a través de web (lo que ya de por sí lo convierte en un potencial problema de seguridad). El problema consistía (como el que acaba de ser descubierto) en enviar una petición HTTP mal formada, aprovechando el protocolo WebDAV y algunas otras circunstancias, como el mal comportamiento del servidor ante ciertos caracteres. Explotar el problema era muy sencillo, tan solo había que usar la cabecera "Trasnlate: f" (que es lo que indica al servidor que la petición tiene que ser manejada con WebDAV) y añadir un carácter "\" al final de la petición GET del archivo ASP del que se quería ver el código fuente.

Antecedentes (2001)

Cuando se publicó IIS, Microsoft no tuvo en cuenta la potencial escalada de directorios que podría permitir el acceso a los archivos de sistema del servidor web. Durante años, entrar en un servidor IIS era tan sencillo como realizar la siguiente petición a través de cualquier navegador:

http://servidor.iis.afectado/scripts/../../../winnt/system32/cmd.exe?/c+dir+c:\

El problema fue corregido, aunque durante mucho tiempo la mayoría de los servidores no parchearon (no existía WindowsUpdate) y la fama negra del navegador se iba forjando. Durante 2001, cuando Microsoft introdujo soporte para la codificación Unicode en Internet Information Server, cometió un terrible error. La conversión a Unicode se realizaba después de la comprobación de la existencia de los caracteres "../..". Por tanto el problema volvió a surgir, y de nuevo, era posible entrar en un servidor gracias a peticiones del tipo:

http://servidor.iis.afectado/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\

Muchos años después, seguiría siendo la forma más sencilla y predilecta de muchos de burlar la seguridad de servidores web de Microsoft.

Antecedentes (2003)

En marzo de 2003 se descubrió un error relacionado con WebDAV que montó un buen revuelo. Un búfer no controlado ponía a los servidores con IIS instalado en un compromiso. Fue uno de los últimos grandes escándalos de IIS. A partir de ahí, las sucesivas versiones del servidor mejoraron sustancialmente la seguridad.

Y en 2009...

Se descubre que de nuevo un atacante puede eludir las restricciones de seguridad y descargar o subir ficheros de directorios WebDAV protegidos con contraseña. Para perpetrar el ataque, solo es necesario realizar una petición PROPFIND a una carpeta, añadiendo caracteres Unicode en su nombre, y por supuesto, con la cabecera "Translate:f".

De vuelta 10 años atrás

En esta vulnerabilidad, se repiten muchos de los elementos de las vulnerabilidades descritas más arriba y que se creían ya "olvidados". El problema se da en IIS 6.0 y anteriores. Las versiones posteriores no se ven afectadas, además de que no traen WebDAV activado por defecto. Por tanto nos encontramos ante un panorama que no recordábamos desde hacía años: una vulnerabilidad directa contra un servidor web (actualmente utilizado, según Netcraft por el 30% de los servidores web) que permite controlar el sistema. Precisamente una mayor concienciación sobre la seguridad, una mejora en la calidad del código, la aplicación de parches de Microsoft (motivada en gran parte por errores como los descritos) y otra serie de factores, hicieron que el objetivo se trasladase bien al cliente (navegadores, lectores de PDF, Flash...), bien a aplicaciones web (principalmente en PHP) pero cada vez menos contra el servidor web en sí.

Microsoft no ha reconocido oficialmente todavía la vulnerabilidad. Se recomienda por tanto deshabilitar WebDAV hasta que exista solución y comprobar los permisos NTFS de los directorios públicos. Existe exploit disponible.


Sergio de los Santos
ssantos@hispasec.com


Más información:

07/10/2000 Listado de directorios no autorizado en IIS 5.0
http://www.hispasec.com/unaaldia/713

14/03/2001 Parche para el problema de IIS 5.0 con WebDAV
http://www.hispasec.com/unaaldia/871

18/03/2003 Desbordamiento de búfer en el componente de WebDAV de
Internet Information Server
http://www.hispasec.com/unaaldia/1605

Microsoft IIS 6.0 WebDAV Remote Authentication Bypass
http://www.milw0rm.com/exploits/8704

No hay comentarios:

Publicar un comentario en la entrada