Длительные последовательности Range можно блокировать через .htaccess
http://habrahabr.ru/blogs/infosecurity/127029/#comment_4191083
Голосование
Какую CMS Вы предпочитаете
AtomX
Fapos CMS
Drunya CMS
Топ новостей
- Генератор аватарок в стиле пиксель-арт
- Скачать Fapos CMS 1.1.8 Бесплатно
- Цунами в Японии. Последствия.
- Предварительная инфа о FAPOS 1.1.9. Часть 2
- Описание версии CMS Fapos 0.9.9
- Новая версия Fapos 1.3
- Половина россиян не смогла отличить легальный контент
- Что есть Fapos CMS
- Убийца Apache у вас на пороге
- Открытое тестирование Fapos 0.9.9
Последние комментарии
Топ пользователей
Сайты на AtomX CMS
Буквально пять дней назад в листе рассылки Full Disclosure появился скрипт, по заявлению автора, убивающий Apache начиная от самых старых версий до самых новых.
И он действительно работает. Скрипт killapache.pl запускает в несколько десятков потоков простой запроc:
Code:
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
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 даже на приличных серверах.
Разработчики Apache подошли к этой проблеме серьёзно, инициативные лица уже предложили изменения в RFC, закрывающие эту уязвимостью. Тем временем все сервера стоят открыты и не защищены.
Как же быть?
Если у вас перед Apache стоит nginx, то можно вообще ничего не делать, даже если файлы, для которых возможны описанные выше запросы, не раздаёт nginx, потому как по-умолчанию, по крайней мере на версии 1.1.0, nginx не передаёт загловок Range на проксируемый сервер.
Проверить, уязвим ли ваш сервер к этой атаке легко:
Code:
curl -I -H "Range: bytes=0-1,0-2" -s www.example.com/robots.txt | grep Partial
Если на такие запросы отвечает Apache и вы видите 206 Partial Content, значит быть беде.
Запретить nginx проксировать опасный заголовок можно директивой:
proxy_set_header Range "";
Если нет nginx?
Если у вас во внешний мир Apache смотрит напрямую… Вы можете полностью заблокировать проблемный заголовок при помощи mod_headers:
# a2enmod headers
RequestHeader unset Range
Если же вам всё-таки нужен этот заголовок, существует решение на основе mod_rewrite и ещё несколько более сложных с mod_headers.
Убийца Apache у вас на пороге
Источник: habrahabr.ru
Источник: habrahabr.ru
Комментарии
-
Сашка_из_Шебекино
Дата отправления: 26 Авг 2011 -
УмНиК
Если запретить заголовок proxy_set_header Range ""; тогда никак будет с сайта докачивать.Дата отправления: 26 Авг 2011 -
Drunya
Где то я уже об этом читал) Тупо очень тупо. Серьезная софтина, а такая беспонтовая дыра. 0_оДата отправления: 26 Авг 2011 -
Сашка_из_Шебекино
Результат запуска скрипта на localhost
Оба процессора по 99%
Примерно 900мб памяти
Апаху требуется 6.15 секунд для рендера страницы с фапосомДата отправления: 25 Авг 2011
Категории:
Сейчас online: 13. Зарегистрированных: 0. Гостей: 13.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Программирование - что может быть проще.
Программирование - что может быть проще.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Написание простого вируса в блокноте
Что такое API и для чего они нужны
Классы в PHP для чайников
Написание простого вируса в блокноте