Недавно наткнулся на статью про найденную уязвимость в веб-сервере apache.
Пять дней назад в листе рассылки Full Disclosure появился скрипт, по заявлению автора, убивающий 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
собирает в памяти длинный ответ из перекрывающихся кусков запрошенного файла, который может занять и занимает значительный объём памяти. При этом потребление памяти Apache начинает резко расти, как на том графике в начале, что при должном, совсем небольшом, количестве запросов приводит к DoS даже на приличных серверах.
Проверить, уязвим ли ваш сервер к этой атаке легко:
curl -I -H "Range: bytes=0-1,0-2" -s www.example.com/robots.txt | grep Partial
Если Вы увидели ответ :
206 Partial Content
То Ваш сервер 100% уязвим для такой атаки.
Что же делать и как поставить защиту ?
Самым простым способомбудет прописать для nginx запрет для проксирования пустых запросов :
proxy_set_header Range "";
proxy_set_header Request-Range "";
А вот если nginx у Вас нет, то рекомендую его установить. Или по сообщениям сайта cybersecurity.ru :
Разработчики web-сервера Apache сообщают об исправлении опасной уязвимости CVE-2011-3192 , которая использовалась злоумышленниками для проведения атак на отказ в обслуживании web-серверов. Стоит отметить, что web-сервер Apache обеспечивает работу двух третей всех сайтов в мире.
Напомним, что опасная уязвимость была обнаружена независимыми специалистами в области информационной безопасности 20 августа. В тот же день в сети Интернет появился эксплоит, который позволял вывести из строя любой сайт, который использует Apache HTTP Server.
Уязвимость в Apache HTTP Server позволяла злоумышленникам аварийно завершать работу web-серверов, используя простую вредоносную программу. Ошибка заключалась в способе обработки большого количества Range запросов в HTTPD, что приводило к исчерпанию ресурсов удаленной системы. Ошибка была исправлена в новой версии Apache HTTP Server 2.2.20. Однако для того, чтобы предотвратить атаку, все администраторы сайтов, которые используют Apache HTTP Server, должны самостоятельно установить обновление.