
Muchas plataformas de servicios web se encuentran expuestas a un ataque de denegación de sus servicios debido a una vulnerabilidad que fue presentada por dos investigadores durante el congreso Chaos Communication Congress que organiza el Chaos Computer Club. Este problema incluye a una amplia lista de tecnologías que se usan en el desarrollo web como PHP, ASP.NET, Java, Python, Ruby, Apache Tomcat, entre otros.
Esta es la lista de las versiones concretas:
- Microsoft .NET Framework 1.x, 2.x, 3.x, y 4.x (CVE-2011-3414)
- PHP 5.3.x (CVE-2011-4885)
- Ruby 1.8.x (CVE-2011-4815)
- Rubinius 1.x
- Rack 1.x (CVE-2011-5036)
- Oracle GlassFish Server 3.x (CVE-2011-5035)
- Apache Tomcat 5.x, 6.x, y 7.x (CVE-2011-4084)
- Apache Geronimo 2.x (CVE-2011-5034)
- Google V8 (CVE-2011-5037)
- Jetty 6.x, y 7.x (CVE-2011-4461)
- Plone 4.x (CVE-2011-4462)
- JRuby 1.x (CVE-2011-4838)
Los lenguajes que no sufren este problema son Perl y CRuby 1.9. Esta vulnerabilidad reside en que los lenguajes almacenan en tablas hash los valores de los parámetros de las peticiones web pero las funciones empleadas son afectadas por colisiones y es fácil genera peticiones con parámetros que tengan el mismo hash. Cuando el server inserta los valores en la tabla tiene que realizar muchas operaciones y provoca la negación del servicio con un número adecuado de parámetros.
Este problema es idéntico a uno que afectaba a Perl y que ya se conocía desde 2003 por lo que este lenguaje ya tiene incorporada la solución que aleatoriza la clave que se usa para calcular el hash así el atacante no puede precalcular parámetros con hashes que podrían provocar colisiones. Una forma más sencilla de evitarlo es limitar el número de parámetros que se procesan durante cada petición.
Un ejemplo de cómo podría afectar este problema es en un sistema con Intel Core i7 en una aplicación PHP en el que serían suficientes 500k de datos POST para ocupar un minuto de tiempo de cálculo de CPU y bastaría una conexión de 70 a 100 kbits/s para mantener ocupada una CPU así.
Varios lenguajes ya publicaron actualizaciones y parches para corregir la vulnerabilidad y se pueden descargar desde sus páginas oficiales. Microsoft ya publicó un boletín urgente para corregir la vulnerabilidad en Microsoft .NET Framework y soluciona otras tres vulnerabilidades de las cuales una es crítica. Apache Tomcat implementó una contramedida para evitar un posible ataque y proporciona la opción maxParameterCount con la que limita la cantidad de parámetros que se procesan en cada petición. Estará disponible para las ramas 7.0.23 en adelante y 6.0.35 en adelante.
PHP utiliza como contramedida el limitar el tiempo de CPU de generación de una respuesta por medio de max_input_time. Ruby actualizó a la versión 1.8.7-p357, PHP 5 corrigió por medio de repositorios SVN, Rack corrigió con repositorio GIT, Apache Tomcat actualizó a las versiones 5.5.35, 6.0.35, y 7.0.23 y JRuby actualizó a la versión 1.6.5.1.
Este es el video de la conferencia completa:
Fuente: Hispasec






Escrito por
Hace










Pingback: Bitacoras.com