16 abr. 2015

MS15-034: Vulnerabilidad crítica en IIS (Parchea de immediato!)

Microsoft acaba de lanzar la actualización MS15-034 (CVE-2015-1635), que soluciona una vulnerabilidad crítica en el archivo http.sys utilizado Internet Information Services (IIS) y otros servicios de Windows. Dicha vulnerabilidad permite denegación de servicio y se piensa que podría permitir ejecución remota de código.

Algunos puntos importantes de la vulnerabilidad:
  1. Como esto no es un error específico de IIS, no aplica sólo a los servidores IIS, puede haber otros componentes afectados.
  2. Los sistemas vulnerables son Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, 8.1 Windows y Windows Server 2012 R2
  3. En principio, el fallo afecta a casi cualquier software de Windows que utiliza http.sys para responder a las solicitudes HTTP. Todo tipo de software podría caer en esa categoría: sistemas de mensajería, logs, agentes de configuración; redes Peer-to peer, demoniios, servicios y hasta una infección de malware ya existente.
  4. El fallo permite la ejecución remota de código. El exploit puede disparar una petición HTTP en apariencia inocente y, en teoría, esto se podría convertir en un gusano lo fue SQL Slammer. Este (por ahora teórico) gusano se podría difundir sin tener que esperar ninguna acción del usuario.
  5. El fallo está en un componente del núcleo, y su explotación exitosa dá el atacante privilegios de System.
  6. El código de explotación y una Prueba de Concepto (PoC) ya puede encontrarse en Internet. Por ahora esta PoC no intenta explotar el bug ni hacer algo deliberadamente malintencionado. La PoC realmente provoca un desbordamiento de búfer.

Detalles

La cabecera HTTP "Range" se utiliza para solicitar parte de un objeto del servidor y es usado comúnmente por gestores de descarga, para reanudar las mismas. Típicamente una cabecera Range se ve como la siguiente:
Range: bytes=124-5656
Range: bytes=0-
El error viene de agregar el siguiente encabezado a una solicitud HTTP como la siguiente:
Range: bytes=0-18446744073709551615
Como puede ver, es sólo un desbordamiento de enteros (64-bit) estándar, donde el número 18446744073709551615 es igual a -1.
Un ejemplo sería:
$ telnet IP PORT
GET / HTTP/1.1
Host: www.site.com
Range: bytes=0-18446744073709551615

$ curl -v http://IP/ -H "Host: irrelevant" -H "Range: bytes=0-18446744073709551615"
$ wget --header="Range: bytes=18-18446744073709551615" http://IP/default.aspx
Cuidado: esta firma específica parece inofensiva, pero hay otras variaciones que pueden causar un problema serio e incluso una blue screen.>
Sin embargo, sirve como prueba útil para comprobar si el servidor está parcheado. Si el servidor está sin parchear, devolverá el siguiente error:
HTTP/1.1 416 Requested Range Not Satisfiable
En cambio si la respuesta es la siguiente, la vulnerabilidad está parcheada:
The request has an invalid header name
Sin embargo, las pruebas no son concluyentes porque se pueden encontrar algunas respuestas vulnerables sin que el servidor lo sea o viceversa.

Metasploit ya ha lanzado un módulo para su explotación al igual que NMAP.

Mitigación especial para IIS

Si tienes un servidor IIS, se puede evitar el daño incluso antes de aplicar la actualización M15-034, usando una solución publicada por Microsoft:
Deshabilitar IIS kernel caching. Esta solución es específica de IIS y puede causar problemas de rendimiento.
Tenga en cuenta que Kernel caching está activado por defecto en IIS 7 y versiones posteriores. Así se puede desactivar en el web.conifg o machine.config.
[configuration]
[system.webServer]
[caching enableKernelCache="false"/]
[/system.webServer]
[/configuration]

Referencias adicionales

Existe online checker sobre cualquier sitio, al igual que este otro.O, se puede utilizar este script en Python.
    Recomendación: instalar de forma inmediata la actualización MS15-034.

    Cristian de la Redacción de Segu-Info

    0 comentarios:

    Publicar un comentario

    Gracias por dejar un comentario en Segu-Info
    Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

    Gracias por comentar!