Форматы
ZIP, RAR или 7Z — какой формат архива выбрать под задачу
Сравниваем форматы архивов по сжатию, скорости, совместимости и паролю. Какой архиватор выбрать под конкретную задачу.
Файл весом в пару десятков килобайт, присланный по почте или найденный на сомнительном сайте, иногда способен положить компьютер или сервер — если это так называемая zip-бомба. Разбираем, как устроена архивная бомба, чем она отличается от соседней угрозы zip-slip (подробно разобранной в наших новостях про node-tar и Gopeed), как распознать подозрительный архив до распаковки и что делать, если компьютер уже начал тормозить. Если вы только выбираете архиватор для повседневных задач — сначала загляните в гид ZIP, RAR или 7Z — какой формат архива выбрать.
Коротко: zip-бомба (архивная бомба) — это крошечный архив, который при распаковке превращается в огромный объём данных и исчерпывает память, место на диске или процессор. Пример из практики — архив 42.zip весом 42 КБ распаковывается в 4,5 петабайта. Это не вирус, а способ вывести из строя систему или обойти антивирусный анализатор. Защита простая: не распаковывать архивы из непроверенных источников вслепую и смотреть на подозрительный коэффициент сжатия до полной распаковки.

Zip-бомба (архивная бомба, decompression bomb) — это специально собранный архивный файл, который при распаковке создаёт объём данных, несоразмерно больший, чем размер самого архива. По определению энциклопедии «Касперского», это один из способов вывести из строя компьютер или испортить работу программы на нём — без эксплуатации уязвимости в привычном смысле, просто за счёт истощения ресурсов.
Принцип прост: обычный архив сжимает данные в несколько раз — энциклопедия «Касперского» приводит для сравнения типичный коэффициент сжатия около 1032:1. Zip-бомба доводит этот принцип до абсурда, используя особенности формата сжатия так, что итоговый объём после распаковки превышает исходный в миллионы и миллиарды раз. Программа, которая пытается распаковать такой файл «как обычно», упирается в нехватку оперативной памяти, свободного места на диске или времени процессора — и либо зависает, либо аварийно завершается.
Архивные бомбы собирают по-разному, и Wikipedia описывает это как алгоритмическую атаку сложности: жертва не файл конкретной программы, а сам процесс распаковки. Два основных подхода отличаются тем, задействована ли в них рекурсия.
Рекурсивная zip-бомба — это архив, вложенный в архив, вложенный в архив, и так много слоёв подряд; на последнем уровне лежит файл, состоящий из повторяющихся байтов (например, сплошных нулей), который прекрасно сжимается. Самый известный пример — 42.zip: по данным энциклопедии «Касперского», исходный файл весит около 42 КБ, но при полной рекурсивной распаковке превращается примерно в 4,5 петабайта данных. Если программа распаковывает вложенные архивы автоматически и рекурсивно, без ограничения глубины, она застревает на этом процессе и исчерпывает ресурсы системы.
Нерекурсивный вариант не требует вложенности архивов друг в друга — вместо этого используется приём, который называют методом перекрытия файлов (file overlapping). Его автором энциклопедия «Касперского» называет исследователя David Fifield: несколько сжатых файлов внутри одного архива ссылаются на один и тот же участок данных, за счёт чего при распаковке этот участок считывается и разворачивается многократно. Такая бомба может быть компактнее рекурсивной и сложнее для автоматического обнаружения именно потому, что не выглядит как «архив в архиве».

Zip-бомбы применяли и в защитных целях: в 2017 году разработчик Christian Haschek описал PHP-скрипт, который отдавал zip-бомбу ботам-сканерам, пытавшимся автоматически перебирать уязвимости на сайте — чтобы замедлить или вывести из строя их сканер.
У обеих угроз архивное происхождение, но механизмы совершенно разные, и путать их не стоит. Zip-бомба — это атака на ресурсы (память, диск, процессор) за счёт аномального коэффициента сжатия: вреда от самих файлов внутри архива нет, проблема в их суммарном объёме. Zip-slip — это атака на файловую систему через пути внутри архива: вредоносная запись вида ../../etc/cron.d/evil заставляет программу распаковки записать файл за пределами целевой папки, а не истощает ресурсы.
На loadfile.ru уже разобраны свежие реальные случаи именно zip-slip: уязвимость в Gopeed, где автораспаковка позволяла записывать файлы вне папки загрузок, и патч в Rclone 1.75.1, закрывший zip-slip CVE в архивах. А decompression-угроза ближе к классической zip-бомбе разбиралась в материале о критической бреши в node-tar, где крошечный gzip-архив мог положить сервер — именно такой случай формально классифицируется как CWE-409.
Прежде чем нажимать «Извлечь всё», стоит посмотреть на архив внимательнее — большинство архиваторов позволяют заглянуть внутрь, не распаковывая файл целиком.
Если архив уже запущен на распаковку и система резко замедлилась, важно остановиться вовремя — ресурсы истощаются постепенно, а не мгновенно.
Если коэффициент сжатия архива выглядит аномальным, лучше не распаковывать его вовсе, а удалить — восстановить содержимое подозрительного файла из непроверенного источника обычно не нужно.
У zip-бомб есть и атакующее, и оборонительное применение. Злоумышленники используют их для отказа в обслуживании (DoS) — чтобы положить сервер, почтовый шлюз или анализатор файлов, — а также для обхода автоматических антивирусных сканеров: если сканер сам пытается распаковать подозрительный файл для анализа содержимого, zip-бомба может вывести из строя именно его, а не целевую систему. С оборонительной стороны историю 42.zip энциклопедия «Касперского» описывает как давно известный, но по-прежнему актуальный пример: современные антивирусы и архиваторы умеют распознавать аномальные коэффициенты сжатия и ограничивают распаковку, поэтому реальный риск для рядового пользователя сегодня ниже, чем в ранние годы существования этой техники, — но не нулевой, особенно для автоматизированных серверных процессов.
| Мера | Для кого | Что даёт |
|---|---|---|
| Актуальный антивирус и архиватор | Любой пользователь | Современные версии распознают аномальный коэффициент сжатия и предупреждают до полной распаковки |
| Не распаковывать архивы из непроверенных источников | Любой пользователь | Базовая гигиена — та же, что и для других вложений |
| Смотреть содержимое архива до извлечения | Любой пользователь | Позволяет заметить аномальный заявленный объём заранее |
| Лимиты памяти, диска и CPU при автоматической обработке файлов | Разработчики, админы | Останавливает распаковку до исчерпания ресурсов сервера; относится к классу уязвимостей CWE-409 |
| Ограничение глубины рекурсии при распаковке вложенных архивов | Разработчики, админы | Блокирует рекурсивные бомбы вроде 42.zip на уровне логики приложения |
Для разработчиков и системных администраторов, которые обрабатывают загружаемые пользователями архивы автоматически (например, при распаковке на сервере), защита от decompression bomb входит в более широкую категорию OWASP A05:2021 — Security Misconfiguration: обработка «любого размера любого файла без ограничений» — это и есть неверная конфигурация, которую стоит исправить лимитами на этапе проектирования, а не надеяться на то, что конкретный вредоносный файл не попадётся.
Принцип тот же — мобильная операционная система при распаковке аномально сжатого архива так же упирается в лимиты памяти и места на диске. На практике мобильные архиваторы и ОС обычно жёстче ограничивают ресурсы приложений, поэтому полное зависание системы менее вероятно, чем на десктопе, но подвисание самого приложения-архиватора или нехватка места возможны.
Старые или упрощённые сканеры, которые пытаются полностью распаковать файл для анализа содержимого, могут зависнуть на этом процессе так же, как и обычная программа. Современные антивирусы ограничивают глубину и объём распаковки при сканировании именно для того, чтобы не попасть в эту ловушку.
Нет. Zip-бомба не содержит вредоносного исполняемого кода и не заражает систему — это файл, который использует особенности формата сжатия для истощения ресурсов при распаковке. По механике это ближе к атаке типа «отказ в обслуживании», чем к классическому вирусу.
Запуск в изолированной среде (виртуальная машина, контейнер с жёсткими лимитами ресурсов) снижает риск для основной системы, но сама песочница всё равно может исчерпать выделенные ей ресурсы и аварийно завершиться. Если цели распаковывать файл нет — проще и безопаснее его просто не открывать.
Обычный большой архив честно отражает объём содержимого: условные 2 ГБ видео сжимаются в архив, который весит примерно столько же. У zip-бомбы соотношение между весом архива и объёмом содержимого после распаковки аномально велико — именно этот перекос и есть главный признак отличия.
Откройте архив двойным кликом в архиваторе (это открывает его для просмотра, а не распаковывает) — программа покажет список файлов внутри с их заявленным размером и суммарный объём, прежде чем вы нажмёте «Извлечь».