Зачем открывать архив на 64 МБ
Ни блокировать архивы, ни пропускать их не открывая — неправильные ответы. Правильный — открывать с ограничениями. И ограничений должно быть два, а не одно.
Ни блокировать архивы, ни пропускать их не открывая — неправильные ответы. Правильный — открывать с ограничениями. И ограничений должно быть два, а не одно.
С архивами на почтовом шлюзе поступают двумя способами. Первый — блокировать вовсе. Это работает неделю, потом бухгалтерия не может отправить отчёт в ZIP, и правило выключают.
Второй — открывать только первый слой. Это готовая инструкция для атакующего: положи RAR внутрь ZIP, дальше не пойдут. Во многих шлюзах этот предел даже не показан в настройках.
Третий путь — открывать, но с бюджетом. Это единственный работающий вариант, и остальная часть статьи о том, как он настраивается.
Открыть неизвестный архив — значит потратить ресурсы. Файл в 42 КБ при распаковке может превратиться в петабайт; это называется «зип-бомба», и это не вредоносный код, а обычная математика сжатия.
Бомбе не нужна сигнатура антивируса, и статическим анализом её не поймать — она проявляется только при распаковке. Поэтому защита должна быть не в сигнатуре, а в ограничении.
Открытие всегда идёт с бюджетом: глубина рекурсии, суммарный распакованный объём, число вложенных файлов и общий бюджет сканирования. У нас эти значения равны 4, 512 МБ, 5000 и 300 МБ соответственно.
Коэффициент сжатия — признак бомбы. Но и честный файл сжимается сильно: текстовый журнал со сжатием в 100 раз абсолютно нормален, потому что в нём много повторяющихся строк.
Один порог либо пропустит бомбу, либо заблокирует отчёт. Куда его ни двигай, ошибка переезжает на другую сторону.
Поэтому работают два порога. Мягкий (100×) — карантин: решение остаётся за человеком. Жёсткий (500×) — отказ: это уже не отчёт. Два числа вместо одного снимают размен между ложноположительным и ложноотрицательным.
Глубина рекурсии — самый простой инструмент для бомбы: каждый слой умножает коэффициент. Четырёх слоёв достаточно для практики — в настоящей почте пятиуровневая вложенность почти не встречается.
Число вложенных файлов ограничивается отдельно. Архив со ста тысячами пустых файлов проходит по суммарному объёму, но душит файловую систему и сканер количеством операций.
И общий бюджет сканирования — по времени и по объёму. Он служит последним барьером для случаев, где все прочие ограничения оказались обойдены.
Самый частый обход — архив под паролем. Сканер не может открыть, значит пропускает как «чистое». А пользователь берёт пароль из текста письма, потому что атакующий его туда и написал.
Решение настолько же простое: искать пароль в тексте письма, во вложенном документе или в тексте на картинке (через OCR) и пробовать открыть им. Мы перебираем до восьми кандидатов.
После открытия всё содержимое сканируется заново — то есть найденный пароль не завершает проверку, а начинает её. Если пароль не найден, архив попадает в состояние «не открылся», и применяется политика сбоя.
Файлы дисковых образов — VHD, VMDK, ISO — выглядят в почте обычным вложением, и большинство шлюзов их не открывает. А внутри спокойно лежит исполняемый файл.
Их нужно монтировать и сканировать содержимое так же, как архив. То же самое относится к OneNote, CHM и другим контейнерным форматам.
Второй случай — подделанное расширение. Даже если имя файла `.doc`, но внутри ZIP — это ZIP. Формат всегда определяется по магическим байтам, а не по имени.
Мягкий порог отправляет в карантин, но если карантин — это папка, в которую никто не смотрит, он становится медленной формой блокировки.
Поэтому в карантине обязательны три вещи: уведомление получателю, внятный текст причины («архив сжат в 180 раз») и указание, кто принимает решение.
И метрика: сколько в среднем письмо лежит в карантине и какая доля в итоге выпускается. Если выпускается 95%, порог поставлен слишком низко; если 5% — карантин на деле является блокировкой.
На следующей проверке отправьте на свой шлюз три вещи. Первую — RAR внутри ZIP с обычным тестовым файлом. Вторую — архив, пароль от которого написан в тексте письма. Третью — ISO с исполняемым файлом внутри.
Если прошли все три, слоя работы с архивами у вас нет. Если прошли две — настройка остановилась на полпути, и это самый частый случай.
Четвёртый тест необязателен, но полезен: отправьте файл с высоким коэффициентом сжатия, но абсолютно честный — например, большой текстовый журнал. Если он заблокирован, у вас один порог, а не два.
Покажите домен — дадим первичный анализ вашего текущего внешнего состояния. На этом этапе ничего не меняется.

