Добро пожаловать на Craft‑Bukkit

Всё о Minecraft серверах: гайды, команды, скачивание сборок и полезные советы для администраторов и игроков.

Уязвимость «Infinite NBT» и краш сервера через книги: как это работает и защита

wergio 24.07.2026 12:11 9
Уязвимость Infinite NBT: как хакеры крашат сервер Minecraft через книги и рекурсивные предметы.

Введение: книга-убийца

Книги в 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)

⏳ Все комментарии проходят модерацию

🔒 Войдите, чтобы оставить комментарий

😊 Пока нет комментариев. Будьте первым!