Inicio / Alerta Temprana / Avisos Seguridad / Vulnerabilidad de denegación de servicio en servidores web

Vulnerabilidad de denegación de servicio en servidores web

Fecha de publicación: 
29/12/2011
Importancia: 
5 - Crítica
Recursos afectados: 

Aplicaciones web que utilicen alguno de los siguientes lenguajes de programación:

  • PHP
  • ASP.NET
  • Java
  • Python
  • Ruby
  • v8/node.js (implementación de Javascript de Google)
  • Cualquier otro lenguaje de programación que no utilice un valor aleatorio en la generación de hashes para la inserción en tablas hash.
Descripción: 

La vulnerabilidad se encuentra en la forma en que la aplicación web almacena en tablas hash los valores sumistrados por el usuario. Entre otros, se ven afectados PHP5, Java y ASP.NET. Actualizado 11/01/12: añadidas nuevas mitigaciones.

Solución: 

La mejor solución es que los desarrolladores de los lenguajes afectados aleatoricen la clave utilizada ("hash seed") al computar los hashes en la inserción en tablas hash. De este, modo el atacante no podría precalcular las colisiones de hashes:

Por el momento, los operadores o desarrolladores de los sitios web puede tomar las siguientes medidas mitigadoras:

  • Reducir el tamaño de los parámetros POST.
  • Reducir el número de parámetros aceptados por la aplicación:
    • Apache Tomcat: ha publicado una actualización que proporciona el parámetro maxParameterCount para limitar el número de parámetros procesados en una única petición.
    • PHP: configurar max_input_vars (esta opción esta presente a partir de la versión 5.3.9 de PHP).
  • Limitar el tiempo de CPU de generación de una respuesta:
    • PHP: reducir max_input_time.
Detalle: 

Investigadores de seguridad han presentado en el Chaos Communication Congress un ataque de denegación de servicio sobre servicios web desarrollados en varios lenguajes de programación como PHP, Java o ASP.NET.

Estos lenguajes almacenan los valores sumistrados por el usuario (tipicamente mediante peticiones POST) en tablas hash por su velocidad de recuperación.

El ataque consiste en suministrar al servicio web un gran número de valores precalculados que generan el mismo hash (colisión de hashes), por lo que se almacenarán en el mismo "slot" de la tabla hash lo que provocará un gran consumo de recursos, debido al gran número de comparaciones que hay que realizar para su insercion, que puede provocar una denegación de servicio.

Impacto:

  • Denegación de servicio.
Etiquetas: