Hispasec - una-al-día 25/08/2011
Todos los días una noticia de seguridad www.hispasec.com
Síguenos en Twitter: http://twitter.com/unaaldia
-------------------------------------------------------------------
Denegación de servicio en Apache a través de Range header
---------------------------------------------------------
Se ha publicado un sencillo exploit que permite provocar una denegación
de servicio en todas las versiones de Apache. Esto significa que se
puede dejar sin servicio a los servidores web Apache con la
configuración por defecto. De nuevo el responsable del descubrimiento
ha sido Kingcope, que ha dado todos los detalles técnicos sin avisar
previamente. En realidad el fallo se conocía desde 2007.
El día 19 de agosto, viernes, Kingcope hizo público un sencillo exploit
en Perl que permitía provocar una denegación de servicio en Apache desde
un solo sistema. Cuando menos, el rendimiento del servidor atacado se
reducían considerablemente. Hacía mucho tiempo que no se publicaba un
exploit que permitiese "echar abajo" un servidor entero desde un solo
ordenador. Lo curioso es que Michal Zalewski descubrió algo muy parecido
en enero de 2007. Usando un mismo vector de ataque, se conseguía un
efecto diferente: Zalewski agotaba el ancho de banda, mientras que
Kingcope consigue agotar los recursos físicos del servidor. Al no
publicarse exploit entonces, sino simplemente explicar un comportamiento
"extraño", no recibió demasiada atención.
No es la primera vez que Kingcope publica sin previo aviso. En
septiembre de 2009 hizo público un fallo en IIS 5. En noviembre, una
elevación de privilegios en FreeBSD y en julio, un grave problema en
OpenSSH de FreeBSD. Siempre lleva hasta sus últimas consecuencias el
"full disclosure" y suele enviar sin más a las listas de seguridad todos
los detalles del problema. Con Apache no ha hecho una excepción.
La vulnerabilidad se encuentra en el módulo mod_deflate. Consiste en el
agotamiento de recursos al crear múltiples peticiones con la cabecera
Range manipulada. Según el exploit publicado se envía esta cabecera con
la siguiente secuencia 0-,5-0,5-1,5-2...5-1299. Esto provoca que el
servidor genere múltiples respuestas que son fragmentos de un mismo
recurso, en definitiva, se trata de peticiones manipuladas de rangos de
bytes de un mismo archivo o recurso a descargar. Además la petición se
realiza con la cabecera "Accept-Enconding: gzip" que hace que el
servidor vulnerable intente comprimir cada fragmento solicitado,
consumiendo memoria y tiempo de procesador hasta que el proceso
deja de responder.
"mod_deflate" es un módulo empleado por Apache para comprimir contenido
antes de ser devuelto al cliente. Este módulo es instalado y habilitado
por defecto en la instalación base de Apache.
No existe parche oficial por parte de Apache aunque sí que se han hecho
públicos diferentes métodos para mitigar el ataque y la promesa de un
parche en 48 horas (lo que acumularía una semana tras el aviso). Se
recomienda seguir las contramedidas que describe Apache, disponibles en
la dirección:
http://mail-archives.apache.org/mod_mbox/httpd-announce/201108.mbox/%3c20110824161640.122D387DD@minotaur.apache.org%3e