What is Zip Bomb?
April 12, 2023
Класична zip-бомба — це крихітний архів, більшість з них має розмір кілобайтів. Коли цей файл розпаковано, його вміст є значно більшим, ніж той, з яким система може впоратися. Як правило, це сотні гігабайт даних, а більш просунуті бомби можуть доставляти петабайти (мільйони ГБ) або навіть ексабайти (мільярди гігабайт) файлів. Отже, так, мова йде про втиснення ексабайтів у декілька десятків чи сотень кілобайт.
Перша згадка про zip-бомбу датована 1996 роком. Один із користувачів популярного на той час сервісу обміну повідомленнями Fidonet розмістив на дошці оголошень шкідливий архів, який відкрив нічого не підозрюючий адміністратор. Відкриття такого файлу провокує процес розпаковки, що призводить до збою програми або всієї системи, оскільки системі просто не вистачає місця, щоб розпакувати такий обсяг даних.
42.zip - Класична Zip-бомба
Найпоширеніша zip-бомба, яку ви можете знайти в Інтернеті - це " 42.zip". В упакованому вигляді цей архів важить лише 42 Кб.
Однак, якщо ви розпакуєте його, ви отримаєте 4,5 петабайт (36 000 000 ГБ) даних!
Це досягається рекурсивно вкладеною системою zip-файлів, де найнижчий рівень zip-файлу розпаковується до розміру 4,3 ГБ. Конструкція використовує найпоширеніший алгоритм декомпресії, який сумісний із більшістю утиліт для роботи з zip-архівами.
Визначення Zip-бомби: як це працює?
Принцип роботи zip-бомби полягає в створенні, наприклад, текстовий файлу — порожнього, або заповненого однаковими символами — і його архівуванні. Оскільки файл містить однотипний набір символів, він є простим до стискання та матиме значно менший розмір, ніж заповнений нормальною інформацією. Потім створюється ще 16 таких самих архівів, але оскільки вони повністю ідентичні в хеші, вони будуть зкомпресовані як один файл і нічого не важитимуть. Потім ще 16 копій, потім ще 16 копій — і так 6 разів. Зрештою, у нас є 6 рівнів по 16 архівів, кожен з яких містить 16 однакових архівів.
Що таке зтискання (компресія)?
Стиснення - це зменшення кількості бітів, необхідних для представлення даних. Давайте розглянемо це докладніше:
| xxxyyyyxxxyxxxyxxx
Цей рядок складається з 18 символів. xxx можна знайти багато разів. Це явище називається статистичною надмірністю. Давайте візьмемо найдовші загальні послідовності в даних і представимо їх, використовуючи якомога менше бітів. Тепер стиснення цього рядка означає, що ми повинні представити цю інформацію менш ніж у 18 символів. Давайте замінимо кожну послідовність «xxx» на символ, скажімо «$», і подивимося, що станеться.
Тепер ми використовуємо проміжну (стиснуту) форму рядка разом з інструкціями щодо того, як отримати вихідний рядок:
| $yyyy$y$y$
| $=xxx
Перший рядок - це наші зтиснуті дані, а другий - інструкція. Словник, який ми створили, говорить нам, що якщо нам потрібно розпакувати дані, ми повинні замінити кожне входження $ на xxx, щоб повернути вихідні дані. Тепер порахуємо загальну кількість символів.
Тепер нам потрібно 10 + 5 = 15 символів, щоб представити ту саму інформацію. При збільшенні кількості рядків, ефективність зтиснення зростатиме, як і при збільшенні компресованих параметрів.
Для чого використовується Zip-бомба?
Оскільки zip-бомба безпосередньо не пошкоджує систему, її часто використовують, щоб викликати збій або вимкнення програми, яка намагається отримати до неї доступ. Його також можна використовувати для вимкнення антивірусного програмного забезпечення при розгортанні бекдора або іншого типового зловмисного програмного забезпечення.
Замість того, щоб порушувати роботу програми через зміни у її налаштуваннях, zip-бомба дозволяє програмі працювати за призначенням. При цьому програма працює з шкідливим архівом, розпакування якого (наприклад, сканування антивірусом на наявність вірусів) займає надто багато часу, дискового простору чи пам’яті (або всього разом). У цей час зловмисник може спробувати заразити систему нормальним вірусом. Хоча іноді при спробі перевірити вкладення антивірус забирає всі ресурси ПК, тим самим навантажуючи систему настільки, що подальше використання пристрою стає неможливим. Через це деякі антивіруси за замовчанням ігнорують архіви, скануючи їх лише за безпосереднім проханням користувача.
Звідки беруться zip-бомби?
Випадково заразитися таким вірусом практично неможливо. Більшість сучасних антивірусів навчилися розпізнавати та знешкоджувати zip-бомби, і на практиці ефективність такої атаки мінімальна. Тим не менш, незахищені системи все ще можуть постраждати від такого шкідливого файлу. В наші дні, zip-бомби більше використовуються як злий жарт, ніж повноцінна кіберзагроза.