В популярном фреймворке Apache Log4j, предназначенном для ведения журналирования в Java-приложениях, выявлена критическая уязвимость, которая позволяет выполнить произвольный код при записи в лог сообщения в определённом формате.

Библиотека Log4j очень популярна и практически стала стандартом. Ею пользовались многие Java-разработчики, а, значит, угрозе сейчас потенциально подвержено множество приложений.

Ожидается, что уязвимость привлечёт к множественным атакам на корпоративные приложения и веб-сервисы, использующие Java.

Ситуация осложняется тем, что об уязвимости стало широко известно до того, как было выпущено исправление библиотеки. На момент написания статьи было опубликовано лишь две предварительных версии, исправляющие ошибку.

Библиотека использовалась во множестве популярных фреймворков, таких как Steam, Apple iCloud, Apache Sprut, а также, что нам особенно интересно, в клиенте и сервере игры Minecraft Java Edition.

Как злоумышленники могут использовать данную уязвимость в Minecraft

Поскольку для того, чтобы выполнить произвольный код, необходимо записать в лог строку в определённом формате, то фактически источником уязвимость может стать любой источник, который может повлечь создание такой строки.

Это может быть плагин для сервера, мод или игрок с таким модом, какой-то пакет данных, отправленный с сервера игроку, и т.п.

Ситуация действительно серьёзная, учитывая, что случаи взлома и атаки на игровые серверы в Minecraft-сообществе не являются редкостью.

Думаю, что потенциальными целями для злоумышленников в первую очередь станут серверы, но позаботиться о безопасности нужно всем.

Как защититься игрокам и владельцам серверов

На текущий момент уже выпущены обновления для Minecraft, а также популярных серверов и движков модов.

За создателей игры отдувался разработчик Java Edition @slicedlime, который создал тред в твиттере, в котором рассказал о ситуации.

Важное из его треда:

  • Выпущено обновление клиента, для установки которого нужно закрыть игру и лаунчер и снова запустить лаунчер — оно будет загружено автоматически.
  • Обновление касается версий Minecraft 1.12 и новее.
  • Неважно, какая версия лаунчера используется, требуемые файлы всё равно будет загружены.
  • Если вы играете на более старой версии, вы остаётесь под угрозой.
  • Для защиты сервера можно при запуске использовать параметр командной строки -Dlog4j2.formatMsgNoLookups=true.
  • Исправление касается только официальных клиентов, модифицированные всё ещё могут быть подвержены ошибкам.

Разработчики Spigot тоже сообщили об исправлении уязвимости, начиная с версий Spigot 1.8.8 и новее. Minecraft-прокси BungeeCord не подвержен уязвимости.

Разработчики Paper выпустили соответствующие обновления Paper 1.16.5, Paper 1.17, Paper 1.18, а также прокси Waterfall и Velocity.

Выпущено обновление для SpongeVanilla и SpongeForge v7.4.2.

Выпущен новый Fabric Loader 0.12.9, который должен решать проблему с уязвимостями. Также разработчиками Fabric выпущен мод, который (по идее) должен решать проблему во всех версиях Minecraft.

Выпущено обновление Forge 1.18-38.0.17 (обновления для 1.17 и 1.16 будут выпущены позднее).

С альтернативными лаунчерами в общем случае ситуация должна быть следующая. Лаунчеры, как правило, загружают файлы игры с северов Minecraft, т.е. если сейчас производится загрузка Minecraft 1.17, например, то он будет обновлён.

Будут ли обновляться существующие установки игры — это зависит от каждого лаунчера.

Я получил комментарий от разработчиков лаунчера TL, в котором мне подтвердили, что существующие установки будут обновлены автоматически. Более того, сейчас выпущены бета версии лаунчера (tlaun.ch/latest/jar, tlaun.ch/latest/exe), в которых на стороне лаунчера будет производиться проверка конфигурации Log4j и его модификация с целью предотвращения уязвимости.

Поэтому владельцам серверов нужно:

  • Обновить свои серверные движки и следить за дальнейшими обновлениями.
  • Не использовать сборки серверов и плагины из непроверенных источников.

Игрокам нужно:

  • Обновить клиенты игры. Нужно понимать, что официально обновлены только Minecraft 1.12 и выше.
  • Если используете моды, то использовать обновлённые версии Forge/Fabric.
  • Не играть на серверах, используя клиенты, в которых не исправлена уязвимость.
  • Не использовать моды и сборки модов из непроверенных источников.
  • Если вы используете альтернативные лаунчеры — нужно быть уверенным, что он обновит уже установленные версии Minecraft.

И, конечно, теперь надо следить за новостями. Обновления, выпущенные сегодня, скорее всего, не последние. Обновленного релиза Log4j пока нет, а все текущие исправления сводятся к отключению потенциально опасно функции. Думаю, можно ждать дальнейших обновлений, связанных с исправлением этой уязвимости.