Una vulnerabilidad descubierta por kingcope permite que los servidores Apache vulnerables sean susceptibles de sufrir una denegación de servicio.

La vulnerabilidad se encuentra en el uso de la cabecera Range. Esta cabecera se utiliza para obtener sólo una parte de la página. Si se solicitan varias partes además de pedir que la respuesta se comprima, mediante la cabecera Accept-Encoding: gzip, se dispara el consumo de procesador y memoria.

Existe un script que permite comprobar si el servidor es vulnerable y, si es el caso, explotar dicha vulnerabilidad.

Para comprobar si un servidor es vulnerable, podemos ejecutar:

bash $ telnet 127.0.0.1 80 HEAD / HTTP/1.1 Host: 127.0.0.1 Range: bytes=0-5 Accept-Encoding: gzip Connection: close

Si la respuesta es un código 206 Partial Content el servidor es vulnerable:

bash HTTP/1.1 206 Partial Content Date: Wed, 31 Aug 2011 11:52:13 GMT Server: Apache/2.2.17 (Ubuntu) Vary: Accept-Encoding Content-Encoding: gzip Content-Range: bytes 0-5/20 Content-Length: 6 Connection: close Content-Type: text/html;charset=UTF-8

Protección

Si tenemos un servidor vulnerable, podemos adoptar alguna de las siguientes medidas de protección.

» Limitar el número de intervalos mediante mod_rewrite:

```bash
 RewriteEngine On
RewriteCond %{HTTP:Range} ([0-9]_-[0-9]_)(\s*,\s*[0-9]_-[0-9]_)+
RewriteRule .* - [NS,L,F]
```

» Deshabilitar el módulo mod_deflate:

```bash

$ sudo a2dismod deflate ```


Entradas relacionadas