Уязвимость CVE-2022-42889: Text4Shell — как обработка текста могла взломать сервер
Введение: третья волна Java-уязвимостей
В октябре 2022 года была обнаружена уязвимость CVE-2022-42889, известная как Text4Shell. Она затрагивала библиотеку Apache Commons Text — ещё одну популярную Java-библиотеку, используемую многими плагинами Minecraft для обработки строк. Уязвимость получила рейтинг 9.8 и позволяла удалённо выполнить код через подстановку интерполированных строк.
Как работала Text4Shell
Apache Commons Text используется для продвинутой обработки строк: интерполяция переменных, форматирование, экранирование. Функция StringLookup позволяла подставлять значения из различных источников (переменные окружения, Java-свойства, URL).
Злоумышленник мог передать строку вида ${script:javascript:java.lang.Runtime.getRuntime().exec('rm -rf /')} в любое поле, которое обрабатывалось уязвимой версией Commons Text. При интерполяции строка выполнялась как скрипт.
Были ли серверы Minecraft уязвимы?
Прямых подтверждённых случаев массовой эксплуатации на серверах Minecraft зафиксировано не было, так как Commons Text не так широко использовалась, как Log4j. Однако многие плагины для работы с текстом (форматирование чата, книги, таблички) могли использовать эту библиотеку. Потенциально уязвимы были плагины, которые:
- Обрабатывают пользовательский ввод через Commons Text.
- Используют функции интерполяции строк.
- Имеют функцию «eval» или «execute» в текстовых полях.
Как защититься
- Обновить Apache Commons Text до версии 1.10.0+.
- Обновить все плагины до последних версий.
- Не использовать интерполяцию строк с пользовательским вводом.
💡 Совет профи
Text4Shell, как и Log4Shell, эксплуатировала функцию подстановки строк. Общий принцип защиты: НИКОГДА не позволяйте пользовательскому вводу интерпретироваться как код. Все строки, полученные от игроков (чат, названия предметов, книги, таблички), должны рассматриваться как ДАННЫЕ, а не как ИНСТРУКЦИИ.
💬 Комментарии (0)
🔒 Войдите, чтобы оставить комментарий
😊 Пока нет комментариев. Будьте первым!