Уязвимость «Chunk Ban»: как хакеры крашат сервер через повреждённые чанки
Введение: чанк-бомба
Chunk Ban (чанк-бан) — это эксплойт, при котором злоумышленник создаёт в мире объект с аномально большими NBT-данными, и когда сервер пытается загрузить этот чанк — он крашится или зависает. Другие игроки, проходящие через этот чанк, также вылетают. Это одна из самых опасных уязвимостей на публичных серверах, потому что для её эксплуатации не нужны права администратора — достаточно иметь возможность размещать блоки или предметы в мире.
Как работает Chunk Ban
Злоумышленник создаёт предмет с огромным количеством NBT-тегов. Это может быть:
- Книга с миллионом страниц текста.
- Сундук с тысячей вложенных шалкеровых ящиков.
- Табличка с гигабайтом JSON-текста.
- Предмет с рекурсивными NBT-тегами (зацикленная вложенность).
Когда сервер сохраняет чанк с таким объектом, размер region-файла вырастает до сотен мегабайт. При попытке загрузить этот чанк сервер исчерпывает память или процессорное время и крашится. Хуже того — после краша сервер при запуске снова пытается загрузить этот чанк и снова крашится. Получается «петля крашей».
Как защититься
- Paper.yml: настройте лимиты NBT:
max-nbt-size: 2097152,max-nbt-depth: 512. - Плагин ItemNBTLimiter: ограничивает NBT для разных типов предметов.
- Мониторинг region-файлов: скрипт, который алертит, если размер файла превышает 5-10 МБ.
- Удаление повреждённых чанков: инструмент Region Fixer для автоматического восстановления.
💡 Совет профи
Настройте автоматический мониторинг размера region-файлов. Скрипт на Python/Bash проверяет папку region раз в час. Если какой-то файл превышает лимит (например, 8 МБ) — отправляется алерт в Discord с координатами. Администратор может удалённо удалить проблемный чанк через консоль, не дожидаясь краша сервера.
💬 Комментарии (0)
🔒 Войдите, чтобы оставить комментарий
😊 Пока нет комментариев. Будьте первым!