В HTTP-сервере Apache присутствует опасная уязвимость
Опасная уязвимость была обнаружена в HTTP-сервере Apache. Уязвимость позволяет вызвать отказ в обслуживании через исчерпание всей доступной памяти.
Для использования обнаруженной уязвимости уже доступен эксплоит, который позволяет злоумышленникам осуществить атаку с одного компьютера, с генерацией минимального трафика. Если отсутствуют некоторые лимиты на размер выделяемой сервером Apacheпамяти, то после выполнения эксплоита происходит полное исчерпание памяти с уходом в бесконечный своппинг без возможности зайти в консоль.
Ошибка в реализации поддержки загрузки файла по указанному диапазону стала причиной возникновения уязвимости. Если обрабатываемый запрос содержит большое число диапазонов и используется gzip-сжатие отдаваемого контента, то происходит исчерпание всей доступной памяти, так как Apacheпытается сжать каждый диапазон отдельно. Для проведения удачной атаки мошенникам требуется отправить примерно 50 подобных запросов из составным Rangeна сервер.
Исправление данной проблемы доступно в виде патча. Также можно очищать заголовок Rangeс помощью mod-header (“RequestHeaderunsetrange) или заблокировать последовательности Rangeчерез mod-rewrite:
# Вариант 1:
RewriteEngine On
RewriteCond %{HTTP:Range} bytes=0-[0-9]+, [NC,OR]
RewriteCond %{HTTP:Range} bytes=([0-9-],){4,} [NC,OR]
RewriteCond %{HTTP:Range} bytes=[0-9,-]+,0-(,|$) [NC]
RewriteRule .? %{SERVER_NAME}/ [NS,L,F]
# Вариант 2:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(HEAD|GET) [NC]
RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+
RewriteRule .* - [F]
# Вариант 3:
RewriteEngine On
RewriteCond %{HTTP:Range} bytes=0-.* [NC]
RewriteRule .? %{SERVER_NAME}/ [R=302,L]
Стоит отметить, что 4 года назад польский эксперт в области компьютерной безопасности Михаил Залевски сообщал о возможности совершения такой атаки, но в то время данной проблеме не придали особого значения и исправления не были добавлены.
www.securitylab.ru