Оказывается, уже давно существует такая вещь, как
zip-бомба, а я узнала о ней только сегодня.
Для чего нужна: стоит вам накатить новую версию чего-нибудь, что доступно через веб, или просто вышло обновление безопасности для какой-нибудь CMS, и есть широкой публике стало известно о какой-то уязвимости, как начинаются масштабные попытки обнаружить сайты с незакрытой уязвимостью. То есть буквально события разворачиваются по сценарию "я иду искать, кто не спрятался обновился - я не виноват". При этом боты долбятся на сайт со скоростью швейной машинки Зингер, то есть запросы поступают несколько раз в секунду. Я своими глазами наблюдала эффект после выхода обновления безопасности WordPress. И неважно, что у тебя на сервере вордпрессом, на который рассчитывают боты, даже не пахнет. Логи пишутся, и даже самый хорошо защищенный сайт бывает изрядно занят логгированием атаки. Грамотно настроенный сайт начинает отвергать новые поступающие коннекты и становится на несколько секунд недоступен (то есть предлагает обратиться еще раз через несколько секунд), и от этого выходит из себя генеральный заказчика страдают добропорядочные пользователи.
То есть особого вреда сканнеры не приносят, но могут затормозить работу сайта и испортить репутацию разработчиков. Примерно как комары, которые долбятся в антимоскитную сетку: знаешь, что укусить не смогут, но нудный писк не все равно мешает спать. Комарам в таких случаях хочется настучать по лбу - всем сразу.
С комарами придется смириться - все-таки они часть экосистемы. А что можно сделать со сканнерами? А вот в статье на хабре "
Защищаем сайт с помощью ZIP-бомб" предлагается заложить на сайт zip-бомбу, вернее, gzip-бомбу. Это такой архив, который занимает на файловой системе несколько сотен килобайт, а при распаковке разворачивается в многие петабайты, съедая напрочь всю оперативку машины, браузер с которой пытается этот архив распаковать. На пикабу в комментах к статье "
Что такое зип-бомбы?" описан принцип создания таких архивов:
treygolnikПрикол в степени.
Данные сжимаются на каждом уровне примерно так:
1 (0х10000)
1.1 (0х10000)
1.1.1 (0х10000)
1.1.2 (0х10000)
...
1.2 (0х10000)
...
2 (0х10000)
2.1 (0х10000)
...
2.2 (0х100000)
...
Так, на каждом уровне простая запись типа "Вот тут лежит тхт файл, в нем десять тысяч нулей" - что намного короче, чем просто десять тысяч нулей. Во время распаковки программа читает инструкции и создает, так сказать, файл по инструкции заполняя его тем, что там закодировано в сокращении.
В результате каждый уровень дает файл на 10000 нулей, внутри которого такой же файл на 10000 нулей и так далее.
Комменты к статье на хабре, как всегда, являются ценным дополнением к статье. На этот раз большая часть посвящена обсуждению того, насколько этично использование zip-бомбы для защиты своих ресурсов, а также встроенным средствам браузеров для защиты от бомб. Есть прекрасные посты:
vlreshetПомню был пост о мужике который сделал «файл» типа db.backup.zip, который отдавался с мизерной скоростью, запрещал докачку, и по факту бесконечно отдавал /dev/urandom. И холодными зимними вечерами автор попивал пиво и смотрел на логи, и на то как кто-то докачивал уже 60 гиг.
PS. Оказывается, файл-бомба упоминается в романе Сергея Лукьяненко «Лабиринт отражений». Если что, роман написан в 1996 году.
«Увидите», - сказал Маг. И он прав, трудно не увидеть действие файл-бомбы.