(Por Rubén Borlenghi, el Microsaurio) Dos semanas antes de la fecha usual de aparición de los Boletines de Seguridad de Microsoft, la empresa reconoce la existencia de una vulnerabilidad que afecta a todos los sistemas operativos en uso. La falla también existe en servidores web de otros proveedores. Y sacaron un parche fuera de fecha, nomás. Estamos mal, pero vamos bien…
Esta vez no es una metida de pata de un programador de Redmond, dado que no es un error de programación original del código de Windows. Según este informe de los investigadores de la empresa alemana Nruns, la falla está en cierta implementación del método de solicitudes POST del protocolo HTTP, empleado por una cantidad de servidores web de código abierto y propietario.
Para aclarar brutalmente, POST se usa cuando desde el navegador de una máquina cliente (el usuario de Internet) se intenta “subir” un archivo al servidor web, o devolverle un formulario en el que se completaron datos. ¿Ya te diste cuenta? Si puedo enviarle legítimamente archivos al servidor, estoy entrando, con permiso, al ídem…
En este caso, lo que descubrieron cuatro meses atrás Alexander Klink y Julian Walde es que se puede implementar una Denegación de Servicio relativamente simple, que dejará al servidor web fuera de uso. ¿Cómo? Escribiendo un contenido suficientemente dañino y enviándolo dentro del texto de la petición POST. El problema es que los alemanes, prolijitos y didácticos ellos, detallan en el pdf cómo tiene que ser ese contenido. Del dicho al hecho, me enseñaron en la facu, hay poco trecho.
Dato interesante: el tema fue avisado el 1° de septiembre de 2011 a casi todos los productores de software (a Microsoft recién el 29); el 9 del mismo mes, confirmada la falla, se reservó una Nota de Vulnerabilidad, la CVE-2011-3134; pero todo el fundamento de este tipo de ataque está en un péiper de Crosby y Wallach, “Denegación de Servicio a través de ataques de complejidad algorítmica”, publicado en… ¡¡2003!!
Sí, ahí estaba, durmiendo en un estante, hasta que lo despertaron…
Fabricantes, productos o sistemas afectados (agárrense de la silla)
- PHP 4 y 5
- Google por PHP, v8 y Jetty de la Google App Enigne
- Python, por Plone (oh, me pregunto: ¿y Zope, y MediaWiki?)
- Oracle (Java – Glassfish)
- Apache, con Tomcat y Geronimo
- Ruby (CRuby 1.8, JRuby, Rubinius)
- Microsoft por ASP.NET y el Microsoft .NET Framework, versiones 1.x, 2, 3.x y 4, en todos los sistemas operativos de cliente o servidor (si está corriendo alguno de los componentes mencionados y se cumplen ciertas condiciones)
De acuerdo a la información de Nruns, tanto Ruby como Apache han desarrollado actualizaciones de sus productos que solucionan el problema; Oracle dijo que el problema no está en Java, y que emparchará Glassfish probablemente en la fecha programada para actualizaciones de productos (17 de enero).
¿Y Microsoft? Según su nota de seguridad 2659883 difundida el 28 de diciembre ante la aparición de la información alemana, ellos estaban estudiando la conveniencia de publicar (o no) un boletín-parche antes de fecha, y mencionaban los casos en que un sistema operativo Windows cliente o servidor podría estar afectado.
Al día siguiente, el 29, un breve comentario en el blog del Microsoft Security Response Center (MSRC) firmado por Dave Forstrom, director de Microsoft Trustworthy Computing, indicaba que ya estaba listo y publicado el Boletín de Seguridad MS11-100, con los detalles de la actualización que soluciona el problema. Aclaró, además, que “…los usuarios finales no son vulnerables a menos que estén ejecutando un servidor Web desde sus computadoras…”
Tal vez sería razonable que los propietarios de websites con contenido dinámico que aceptan peticiones POST le hagan un par de preguntitas a sus webmasters o desarrolladores. Digo, es un decir, nomás.
Imagen de WwEeRrIiTt@