Уязвимость «Infinite NBT» и краш сервера через книги: как это работает и защита
Введение: книга-убийца
Книги в Minecraft хранят текст в NBT-тегах. Теоретический лимит — 100 страниц по 2560 символов. Но через уязвимости в плагинах или прямую манипуляцию пакетами хакер может создать книгу с миллионом страниц или с рекурсивными NBT-тегами. Когда сервер пытается сохранить или загрузить такую книгу, он исчерпывает память или процессор и крашится. Это называется «Bookban» или «Infinite NBT Exploit». В этой статье — как работают такие атаки и как защититься.
Тип 1: Книга с огромным текстом (Book Oversize)
Принцип: Хакер редактирует пакет, отправляемый при подписании книги, и вставляет текст длиной 1 мегабайт вместо 2560 символов. Сервер сохраняет книгу в регион-файл. Размер чанка вырастает до десятков мегабайт. При попытке загрузить этот чанк сервер падает с OutOfMemoryError.
Защита:
- В
paper.yml:max-book-page-length: 2560иmax-book-pages: 100. Paper обрежет текст, превышающий лимит. - Плагин BookLimiter — дополнительная защита, обрезает текст на стороне сервера до сохранения.
Тип 2: Рекурсивные NBT (Recursive NBT Bomb)
Принцип: Хакер создаёт предмет (например, шалкеровый ящик), внутри которого лежит шалкеровый ящик, внутри которого... и так 100 уровней вложенности. При сохранении такого предмета NBT-данные растут экспоненциально. Размер данных может достигнуть гигабайта для одного предмета. Сервер падает при попытке сохранить или загрузить чанк с этим предметом.
Защита:
- В
paper.yml:max-nbt-depth: 512— ограничивает глубину вложенности NBT. - Плагин ItemNBTLimiter — ограничивает размер NBT для каждого типа предмета.
Тип 3: Книга с escape-последовательностями (Unicode Bomb)
Принцип: Хакер вставляет в книгу длинные последовательности Unicode-символов, которые при рендеринге или сохранении требуют огромных ресурсов. Например, последовательность u0000u0000u0000... повторённая миллион раз.
Защита:
- Плагин AntiUnicodeBomb фильтрует подозрительные последовательности символов.
- Ограничение на длину строки в book.yml (Paper).
💡 Совет профи
Настройте мониторинг размера region-файлов. Если какой-то файл превышает 5 МБ — скрипт отправляет алерт. Админ заходит, находит чанк с аномальной книгой или предметом и удаляет его через NBT Explorer. Не ждите краша сервера — действуйте проактивно.
💬 Комментарии (0)
🔒 Войдите, чтобы оставить комментарий
😊 Пока нет комментариев. Будьте первым!