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

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

Уязвимость «Book Ban»: как одна книга может забанить игрока или крашнуть сервер

wergio 25.07.2026 15:04 6
Book Ban в Minecraft: как одна книга может забанить игрока или крашнуть сервер.

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

«Book Ban» (книжный бан) — это эксплойт, использующий уязвимость в обработке NBT-данных книг. Злоумышленник создаёт книгу с аномально большим объёмом данных (миллионы символов текста, тысячи страниц), и когда сервер пытается сохранить чанк с этой книгой или когда другой игрок открывает эту книгу — сервер либо крашится, либо игрок вылетает с ошибкой и не может зайти обратно (потому что его клиент крашится при загрузке чанка с книгой).

Как работает Book Ban

Minecraft хранит текст книги в NBT-тегах. Ограничения ванильного клиента — 100 страниц по 2560 символов (Java Edition 1.20+). Но через модифицированный клиент или прямую манипуляцию пакетами злоумышленник может отправить книгу с миллионом символов на страницу и тысячей страниц. Размер NBT-данных одной книги может достигать гигабайта.

Когда сервер сохраняет чанк с такой книгой, размер region-файла вырастает до десятков мегабайт. Когда другой игрок заходит в этот чанк, его клиент пытается загрузить книгу и падает с ошибкой «Invalid book data» или «Out of memory». Игрок не может зайти на сервер, потому что при входе он оказывается в том же чанке и снова крашится.

Разновидности атаки

  • Книга с огромным текстом: миллион символов на страницу — чанк весит 50+ МБ.
  • Рекурсивные NBT: шалкеровый ящик внутри шалкерового ящика 100 уровней — экспоненциальный рост данных.
  • Unicode-бомба: последовательность Unicode-символов, которые при сохранении занимают гигабайты.

Как защититься

  • Paper.yml: max-book-page-length: 2560, max-book-pages: 100, max-nbt-depth: 512.
  • Плагин BookLimiter — обрезает текст книги до ванильных лимитов.
  • Плагин ItemNBTLimiter — ограничивает размер NBT-данных для всех предметов.
  • Мониторинг region-файлов: скрипт, который проверяет размер файлов и алертит, если какой-то превышает 5 МБ.

💡 Совет профи

Настройте Paper на удаление повреждённых предметов: remove-corrupt-tile-entities: true. Если сервер обнаружит книгу с аномальными NBT, он удалит её, а не крашнется. Жертвуете одной книгой — спасаете сервер.
← К списку статей

💬 Комментарии (0)

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

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

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