Seguridad: Apache DoS en 1.x y 2.x
- June 20th, 2009
- Write comment
Hoy he leído una noticia bastante interesante acerca de una denegación de servicio en Apache. Tal y como dice la noticia original existe multitud de código que permite explotar este problema.
Cuando se inicia la conexión el servidor espera a las cabeceras enviadas por el cliente. Después de enviar parte de la cabecera legítima, éste (DoSer) envia unas cabeceras especialmente manipuladas que provocan que el servidor no finalice la conexión y permanezca a la espera de las demás partes de la cabecera. Para poder mandar la cabecera que “mantiene al servidor a la escucha” en la cabecera legítima no se envia un CLRF final, sino que después de un tiempo se le envía la cabecera:
X-a: b\r\n
que provoca que el servidor siga aún esperando el resto de la cabecera al no estar finalizada a través de el CLRF que mencionamos anteriormente. Debido a que este ataque se puede realizar moviendo un volumen pequeño de datos como bien apunta la fuente original cualquier usuario con un ancho de banda mínimo podría explotar esta vulnerabilidad en servidores con un ancho de banda relativamente grande.
Si habéis pensado en el parámetro MaxClients lo que hará será incrementar las necesidades de ancho de banda y CPU de los atacantes. Según Tomasz Miklas es posible bloquear este tipo de ataques usando un proxy inverso como PerlBal usándolo delante del servidor con Apache
Apche 1.x y 2.x están afectadas, así como Squid.
[ad]