0

Уязвимость в Apache

Posted Август 30th, 2011. Filed under Блог

Совсем недавно в сети появилась информация об уязвимости обнаруженной в Apache. После отправки веб-серверу запроса следующего вида:

HEAD / HTTP/1.1
Host: www.example.com
Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,<…>,5-1299,5-1300
Accept-Encoding: gzip
Connection: close

Apache пытается подсчитать Content-Length длинного ответа из кусков запрошенного файла. Это довольно быстро приводит к повышенному потреблению оперативной памяти сервера и, как результат, к DoS даже при малом количестве запросов.Отправить этот запрос можно с помощью специального скрипта, написанного на языке Perl, который можно свободно найти в сети под названием killapache.pl.

Проверить, имеет ли ваш сервер данную уязвимость, можно с помощью следующих команд:

curl -I -H "Range: bytes=0-1,0-2"-s www.example.com/robots.txt | grepPartial
curl -I -H "Request-Range: bytes=0-1,0-2,0-3,0-4,0-5,0-6"-s www.example.com/robots.txt | grepPartial
Если хотя бы одна из команд вернула ответ:
206 Partial Content
то ваш сервер уязвим.
Защитить ваш сервер можно следующим образом. Если используется Apache в качестве веб-сервера, то необходимо установить модуль mod_headers и в конфигурационный файл Apache добавить следующие строки:
RequestHeader unset Request-Range
RequestHeader unset Range
Если же в качестве сервера используется Nginx, то достаточно в конфигурационный файл добавить строки:
proxy_set_header Range «»;
proxy_set_header Request-Range «»;
После чего необходимо перезагрузить веб-сервер.

Leave a Comment

You must be logged in to post a comment.

 

You need to log in to vote

The blog owner requires users to be logged in to be able to vote for this post.

Alternatively, if you do not have an account yet you can create one here.

Powered by Vote It Up