Ви можете відкрити такий файл випадково. Але щойно він почне розпаковуватися, файлова система вашого комп’ютера завалиться. При цьому в zip-архіві немає жодного шкідливого коду — це лише математика.
КЛЮЧОВІ ТЕЗИ
- Стиснення в zip-архівах мінімізує дублювання даних, посилаючись на оригінальний контент
- Zip-бомби експлуатують стиснення, використовуючи рекурсію для створення величезних файлів, що призводять до краху системи
- Виявлення та запобігання zip-бомбам потребує зовнішніх стратегій: обмеження глибини розпакування та розміру файлів
Як працює стиснення
Коли ви стискаєте файл у ZIP-архів, ваш комп’ютер шукає закономірності в одиницях і нулях. Повторювані частини зберігаються лише один раз. Потім, замість того щоб записувати те саме знову і знову, архів просто посилається на оригінальну версію. Це неймовірно ефективно. Саме тому текстові файли так добре стискаються. Кілька повторюваних рядків можуть зменшити мегабайти до кілобайтів.
Zip-бомба використовує цю логіку проти самого комп’ютера.
Замість кількох повторюваних блоків, вона містить один блок, повторений мільйони разів. Знову ж таки, самі дані ніколи не копіюються, але zip-бомба посилається на них знову і знову. Потім вона загортає це в інший архів. Потім ще раз. І ще раз.
До моменту, коли ви дійдете до зовнішнього шару, файл виглядає нешкідливо. Він крихітний, швидко передається, в ньому немає нічого незвичайного. Але щойно починається розпакування, посилання розгортаються. Кожне відкриває наступне. Результат — це не типове розархівування zip-файлу, а справжня лавина.
Знаменита Zip-бомба “forty-two dot zip”
Найвідоміша zip-бомба називається “forty-two dot zip“. Вона займає всього сорок два кілобайти на диску. Всередині містить шістнадцять архівних файлів. Кожен з них містить ще шістнадцять. Усі вони посилаються на один і той же фрагмент даних-заповнювача.
У програмуванні це називається рекурсією. Уявіть математичну рекурсію як лабіринт дзеркал. Один файл відкриває інший. Той файл знову відкриває той самий файл. Кожен шар слідує за попереднім. Нічого нового не додається. Структура просто продовжує викликати саму себе, знову і знову, поки в системи не закінчиться місце для відстеження.
Чому вони досі існують
Zip-бомби досі використовуються, переважно в технічних або дослідницьких цілях. Деякі застосовують фахівці з безпеки для тестування системних обмежень. Інші з’являються в академічних роботах для дослідження граничних випадків стиснення. Деякі надсилаються під час реальних кібератак — не як сама атака, а як відволікаючий маневр.
Сучасні zip-бомби використовують нові хитрощі. Деякі поєднують різні формати архівів. Інші включають захищені паролем шари, що збивають з пантелику базові сканери. Деякі розбиваються на кілька електронних листів і стають небезпечними лише після збирання.
Один такий архів, створений у 2023 році, займав десять мегабайт на диску. При повному розпакуванні він створював понад п’ять мільйонів гігабайт даних-заповнювача.
Навіть зараз ви можете створити такий самостійно. Напишіть скрипт, що архівує файли. Заархівуйте файл. Потім заархівуйте цей zip. Потім заархівуйте й те. Повторіть це 100 разів. Зовнішній файл все ще виглядатиме маленьким і швидко передаватиметься електронною поштою. Але кожен шар поглиблює навантаження.
Чи можна виявити zip-бомбу?
Єдиний захист — стратегія. Немає виправлення в самому файлі. Архів — це просто нешкідливі біти. Захист має надходити ззовні.
Антивірусні програми теж спохватилися. Вони встановлюють обмеження: як глибоко сканувати, який розмір розпаковувати. Але не кожна система захищена. Іноді це допитливий користувач. Іноді — автоматизація. Все, що намагається повністю розпакувати файл, стає жертвою. І це працює в WSL або Docker — метод не залежить від операційної системи.
Якщо ви пишете автоматизацію, обмежуйте розмір декомпресії. Якщо скануєте завантаження, встановлюйте максимальну глибину. Якщо отримуєте файли від незнайомців, не довіряйте лише розміру файлу або типу.
Формально легально?
Zip-бомби відкриваються у віртуальних машинах з аварійними вимикачами та обмеженнями пам’яті. Тестування завжди ізольоване. Файл ніколи не запускається на робочій системі.
Zip-бомба — це не фрагмент коду. Це не скрипт чи виконуваний файл, тому це не експлойт у звичайному розумінні. Це особливість роботи сучасних комп’ютерів, коли простий zip-файл без виконуваних файлів може завдати реальної шкоди.
Немає закону проти надсилання комусь zip-файлу без вірусного навантаження. Але це не означає, що це законно. Zip-бомба, надіслана для зламу комп’ютера колеги, — це не жарт. Це вид саботажу. Суди зазвичай зосереджуються на наслідках, а не на типі файлу.




