Как обнаружить архивную бомбу при проверке файла

Архивная бомба — это файл, который выглядит как обычный архив, но при распаковке разворачивается в гигантский объём данных или в огромное количество вложенных архивов. Цель такой конструкции — исчерпать дисковое пространство, память или процессорное время антивируса и системы. Главный принцип защиты прост: никогда не оценивайте архив по его размеру на диске. Файл весом несколько килобайт может содержать петабайты данных после распаковки, поэтому проверять нужно не размер, а структуру архива.

В этой статье разобрано, как устроены архивы-бомбы, по каким признакам их можно выявить до распаковки, какие инструменты использовать и что делать, если подозрительный файл уже попал к вам.

Что такое архивная бомба и почему она работает

Сжатие данных построено на поиске повторяющихся фрагментов. Если данные состоят из одного и того же символа, повторённого миллиарды раз, архиватор запишет это компактно — например, «символ X, повторить N раз». Архивная бомба злоупотребляет именно этим свойством: она специально состоит из максимально предсказуемых данных, чтобы достичь экстремального коэффициента сжатия.

Классический пример — файл 42.zip размером около 42 килобайта. Внутри него вложено несколько уровней архивов, и полная рекурсивная распаковка даёт порядка нескольких петабайт данных. Сам по себе файл безвреден, пока его никто не пытается полностью распаковать или просканировать «вглубь».

Опасность возникает в трёх ситуациях:

  • антивирус автоматически распаковывает архив для проверки содержимого и тратит ресурсы до отказа;
  • пользователь вручную распаковывает архив, и диск заполняется за секунды;
  • серверное приложение (почтовый шлюз, файловый анализатор, обработчик загрузок) принимает архив и начинает его обрабатывать без ограничений.

Отдельная разновидность — zip-бомбы поверх сжатых форматов: например, архив, внутри которого лежит образ файловой системы или высокосжимаемый формат вроде PNG с однотонным изображением огромного разрешения. Такие конструкции обходят проверки, которые считают только «заявленный» размер содержимого.

Признаки архивной бомбы

Ни один признак сам по себе не доказывает вредоносность, но сочетание двух-трёх из них — серьёзный повод не открывать архив и проверить его изолированно.

  • Экстремальный коэффициент сжатия. Обычные документы, фото и программы сжимаются в разы, редко в десятки раз. Отношение заявленного размера содержимого к размеру файла в сотни и тысячи раз — аномалия.
  • Глубокая вложенность. Архив внутри архива внутри архива — норма для доставки ПО, но пять и более уровней вложенности почти всегда подозрительны.
  • Множество одинаковых записей. Сотни или тысячи файлов с идентичным содержимым или одинаковыми именами внутри одного архива.
  • Несоответствие типа файла расширению. Файл с расширением .jpg, который на самом деле является ZIP-архивом, — типичный способ маскировки.
  • Неожиданный источник. Архив от незнакомого отправителя, особенно с призывом «срочно распакуйте» или под видом документа, счёта, резюме.
  • Отсутствие осмысленного содержимого. Имена файлов вида «file001.dat», «data.bin» без понятной структуры.

Как проверить архив перед распаковкой: пошаговый порядок

Проверку выполняйте без полной распаковки. Все описанные действия читают только оглавление и метаданные архива.

  1. Изолируйте файл. Не открывайте его на рабочей машине с важными данными. В идеале — отдельная виртуальная машина без доступа к сети или хотя бы учётная запись без прав администратора.
  2. Проверьте реальный тип файла. Расширение легко подделать. Посмотрите первые байты файла (так называемую «магическую подпись»): у ZIP это символы «PK», у RAR — «Rar!», у 7z — «7z¼¯’». Команды file в Linux и macOS или утилита вроде TrID в Windows покажут действительный формат.
  3. Посмотрите список содержимого без извлечения. Почти все архиваторы умеют показывать оглавление: unzip -l, 7z l, rar l или окно проводника архиватора. Смотрите на количество файлов, глубину путей и заявленные размеры.
  4. Оцените суммарный размер и коэффициент сжатия. Сложите «распакованные размеры» из списка и разделите на размер самого файла. Коэффициент выше примерно 100–200 для обычных данных — повод насторожиться; тысячи и миллионы — практически наверняка бомба.
  5. Проверьте глубину вложенности. Если внутри архива лежат другие архивы, загляните на уровень-два тем же способом (без распаковки). Рекурсивный просмотр удобнее делать скриптом или специализированным инструментом.
  6. Просканируйте антивирусом с ограничением глубины. У большинства корпоративных и многих домашних антивирусов есть настройки максимального уровня вложенности и максимального размера распаковки. Убедитесь, что эти лимиты заданы, прежде чем запускать сканирование.
  7. Примите решение. Если признаки бомбы подтверждены — удалите файл или отправьте его в песочницу для анализа. Если архив нужен по работе, запросите у отправителя переупакованную версию или пояснение.

Пример ручной проверки через командную строку

Условный пример для Linux/macOS с установленным 7-Zip:

7z l suspicious.zip — выведет таблицу: имя, дату, атрибуты, сжатый и несжатый размер каждого элемента. Если в колонке несжатого размера видны значения вроде 4 294 967 295 байт (это ровно 4 ГБ минус 1 байт — часто используется как фиктивное значение) при размере самого архива в килобайты, перед вами классическая бомба.

Для быстрой оценки суммы можно использовать вывод утилиты и посчитать итог по колонке размера. В Windows аналогичную информацию показывает окно архиватора 7-Zip: столбцы «Размер» и «Сжат» рядом дают коэффициент сразу.

Инструменты для автоматической проверки

Инструмент / подход Что делает Кому подходит
Антивирус с лимитами распаковки Сканирует содержимое, но останавливается по лимитам глубины, размера и времени Базовая защита для любого пользователя; лимиты нужно проверить в настройках
7-Zip, unzip, rar в режиме просмотра Показывают оглавление и размеры без извлечения Ручная быстрая проверка одним файлом
Скрипты на Python (модули zipfile, py7zr) Читают метаданные, считают суммарный размер, глубину вложенности, число записей Автоматизация проверки входящих файлов на сервере или в почтовом потоке
Песочницы анализа файлов Запускают файл в изолированной среде и фиксируют поведение Подозрительные файлы, которые нужно изучить безопасно
Почтовые шлюзы и фильтры Блокируют или помечают письма с архивами, превышающими политики Организации, получающие много вложений

Если вы администрируете сервер, принимающий файлы от пользователей, разумно выстроить конвейер проверки: сначала определить реальный тип файла, затем прочитать метаданные архива, отклонить всё, что превышает заранее заданные пороги (коэффициент сжатия, суммарный размер, глубину вложенности, число файлов), и только потом передавать файл дальше. Такой фильтр отсекает бомбы до того, как они достигнут антивируса или бизнес-логики.

Какие пороги выбрать

Универсальных значений нет — они зависят от того, какие файлы вы ожидаете получать. Ориентиры, которые обычно безопасны для типовых сценариев:

  • коэффициент сжатия (несжатый объём / размер файла) — не более 100–200;
  • глубина вложенности архивов — не более 2–3 уровней;
  • количество файлов в одном архиве — в пределах тысяч, если вы не ждёте массовых выгрузок;
  • суммарный распакованный размер — не больше, чем вы реально готовы принять (например, не более 1–2 ГБ для документов).

Для легитимных больших выгрузок (дампы баз, логи, датасеты) пороги придётся поднять — тогда компенсируйте это жёсткими квотами диска и временем обработки, чтобы даже легитимный большой архив не смог положить систему.

Типичные ошибки при проверке

  • Доверие расширению файла. Переименованный .exe в .zip или наоборот — тривиальная маскировка. Всегда сверяйте фактическую подпись файла.
  • Распаковка «на посмотреть». Частичная распаковка первого уровня тоже опасна: некоторые бомбы рассчитаны на то, что жертва извлечёт внутренний архив и запустит его.
  • Полагаться только на антивирус. Классическая zip-бомба может не содержать вредоносного кода вообще — её «полезная нагрузка» это сам объём. Антивирус без настроенных лимитов станет жертвой, а не защитой.
  • Игнорирование вложенности. Проверка только верхнего уровня пропускает бомбы, спрятанные на третьем-четвёртом уровне.
  • Проверка на рабочей машине. Даже если вы уверены в своих действиях, ошибка в команде или двойной клик мышью — и распаковка началась. Используйте изоляцию.

Что делать, если архив уже начал распаковываться

  1. Немедленно прервите процесс распаковки (остановите архиватор или убейте процесс).
  2. Проверьте свободное место на диске. Если оно исчерпано, система может вести себя нестабильно — освободите место, удалив частично распакованные данные.
  3. Не запускайте ничего из распакованного содержимого.
  4. Просканируйте систему антивирусом с актуальными базами — иногда бомба служит обёрткой для настоящего вредоноса.
  5. Если инцидент произошёл на рабочем компьютере, сообщите в IT-отдел или службу безопасности: возможно, такие файлы приходят и другим сотрудникам.

Защита на уровне системы

Помимо проверки конкретных файлов, снизить риск помогают общесистемные меры:

  • квоты на дисковое пространство для пользователей и сервисов — даже успешная распаковка бомбы упрётся в лимит;
  • ограничение прав учётной записи: работа без прав администратора сужает последствия;
  • настроенные лимиты антивируса и почтового шлюза на глубину и объём распаковки;
  • резервные копии — они не предотвращают инцидент, но позволяют восстановиться, если диск был заполнен или файлы повреждены;
  • обучение сотрудников: большинство архивных бомб доставляется через фишинговые письма, и внимательность получателя остаётся первым рубежом.

Частые вопросы

Может ли архивная бомба навредить сама по себе, без распаковки?

Сам файл, лежащий на диске, безвреден: он просто занимает своё небольшое место. Опасность наступает при попытке распаковать его или просканировать без лимитов. Однако архив может быть одновременно и носителем вредоносного кода, поэтому «не распаковывать» не означает «безопасно хранить и пересылать».

Антивирус сказал, что файл чистый. Можно ли распаковывать?

Осторожно. «Чистый» результат означает, что сигнатур вредоносного кода не найдено, но не защищает от переполнения диска. Проверьте коэффициент сжатия и вложенность самостоятельно, а затем убедитесь, что в антивирусе заданы лимиты распаковки.

Легально ли создавать архивную бомбу?

Сам факт создания файла в исследовательских целях законен во многих юрисдикциях, но его использование против чужих систем, серверов или пользователей может квалифицироваться как вредоносное действие и преследоваться по закону. Конкретика зависит от страны и обстоятельств.

Как отличить легитимный сильно сжатый архив от бомбы?

По контексту и структуре. Легитимный архив имеет осмысленные имена файлов, логичную структуру папок, соответствует ожиданиям (например, архив фотографий действительно содержит изображения). Бомба чаще всего состоит из однотипных записей, бессмысленных имён и экстремальных размеров. Если сомневаетесь — запросите у отправителя пояснение, что должно быть внутри.

Нужно ли бояться архивов из официальных источников?

Риск минимален, но базовая проверка не помешает: посмотрите суммарный размер содержимого перед распаковкой, особенно если скачивали файл не напрямую с официального сайта, а через зеркало или ссылку из письма.

Главное

Обнаружение архивной бомбы сводится к трём действиям: определить реальный тип файла, прочитать его оглавление без распаковки и оценить соотношение заявленного объёма к размеру файла вместе с глубиной вложенности. Коэффициент сжатия в сотни раз, многоуровневая вложенность и бессмысленная структура — достаточные основания отказаться от распаковки или перенести файл в изолированную среду. Настройте лимиты распаковки в антивирусе и почтовых фильтрах заранее: они защищают автоматически, когда внимания человека недостаточно.

Материал носит информационный характер и не заменяет консультацию специалиста по информационной безопасности. При работе с потенциально опасными файлами в организации или при подозрении на инцидент обратитесь к профильным специалистам.

PEFile.ru