Zip-бомба (файловая бомба, архивная бомба, архив смерти) — вредоносный архивный файл, который при распаковке может вывести из строя программу или систему, поскольку его обработка требует слишком большого объема памяти или создает чрезмерную нагрузку на процессор. Как правило, такой эффект достигается за счет большой разницы в размере сжатых и распакованных данных.
Виды zip-бомб
Можно выделить два основных вида zip-бомб:
- Рекурсивные
- Нерекурсивные
Рекурсивные бомбы содержат множество вложенных архивов, которые распаковываются один за другим. Деструктивная атака с использованием такого файла может пройти успешно только в том случае, если атакованная программа поддерживает рекурсивную распаковку. Классический пример рекурсивной бомбы — файл 42.zip, состоящий из шести слоев вложенных архивов. В сжатом виде его размер составляет 42 КБ, а после распаковки всех слоев он занимает 4,5 ПБ памяти. Также к рекурсивным zip-бомбам относятся zip-квайны — архивы, содержащие копию себя и провоцирующие бесконечную распаковку.
Нерекурсивные бомбы характеризуются очень большим коэффициентом сжатия данных. Для обычного архива это значение не превышает 1032 к одному. В случае с zip-бомбой коэффициент сжатия может достигать миллионов к одному. Он достигается с помощью метода перекрытия файлов (overlapping files), предложенного американским программистом Дэвидом Файфилдом (David Fifield). Вместо того чтобы сжимать множество одинаковых файлов по отдельности, создатель zip-бомбы использует для них одно общее «ядро» (сжатое содержимое файла). При распаковке из него восстанавливается столько файлов, сколько было упаковано в архив. Чем их больше, тем выше коэффициент сжатия. В результате распаковка единственного слоя вызывает тот же эффект, что и распаковка многочисленных слоев рекурсивной бомбы.
Использование zip-бомб
Zip-бомбы часто используются во вредоносных целях. Например, злоумышленники распространяют их, чтобы вызвать сбой антивируса и беспрепятственно загрузить на компьютер вредоносное ПО.
Архивы смерти могут использовать и против злоумышленников. Например, в 2017 году австрийский программист Кристиан Хашек (Christian Haschek) предложил разработчикам сайтов защищаться от взлома с помощью zip-бомб. Он создал PHP-скрипт, который определяет подозрительные запросы и отправляет в ответ архивную бомбу в формате GZip. Браузер или сканер уязвимостей, который отправил запрос на сервер, пытается распаковать архив и зависает или выдает ошибку.
Опасность zip-бомб
В настоящее время файловые бомбы практически не представляют опасности для пользователей по следующим причинам:
- Многие программы не поддерживают рекурсивную распаковку, а распаковка только одного слоя дает на выходе не очень большой объем данных. Это делает рекурсивные zip-бомбы бессмысленными.
- Большинство современных защитных решений умеют распознавать все виды zip-бомб, блокировать их и предупреждать пользователя об опасности.