Угрозы Log4Shell – в базе поиска Solar appScreener
Компания «Ростелеком-Солар» представила обновленную базу поиска уязвимостей инструмента SAST-анализа Solar appScreener, дополнив ее недавно обнаруженными в библиотеке Apache Log4j уязвимостями нулевого дня. Библиотека Apache Log4j используется миллионами корпоративных приложений и Java-серверами для регистрации сообщений об ошибках. Уязвимости в ней получили название Log4Shell (встречаются также LogJam, LogJ) и относятся к Remote Code Execution (RCE), Local Code Execution (LCE). Помимо этого, обнаружена возможность реализаций атак Denial of Service (DOS).
До дополнения политика Solar appScreener выявляла любые недоверенные данные, которые записывались в журнал и определяла их как уязвимость вида «Подделка файла лога» (Log Forging). Обновление инструмента анализа кода дополнительными правилами позволяет отдельно подчеркивать уязвимости Log4Shell в рамках обнаруженных уязвимостей вида «Подделка файла лога».
В базу сканера анализа Solar appScreener были добавлены правила для поиска всех выявленных на текущий момент уязвимостей библиотеки Apache Log4j:
1. CVE-2021-44228 (оценка опасности угрозы по CVSS: 10/10 баллов) – критическая уязвимость удаленного выполнения кода, которая затрагивает версии Log4j от 2.0-beta9 до 2.14.1. Проблема частично исправлена в патче 2.15.0.
Уязвимость дает возможность в приложениях и серверах на основе Java, в которых используется библиотека Log4j, сохранять определенную строку в логах. Когда приложение или сервер обрабатывают логи, строка может заставить уязвимую систему загрузить и запустить вредоносный код. В результате злоумышленнику удается заполучить полный контроль над уязвимым приложением или сервером. После того атака может развиться дальше.
Разработчики Apache Software Foundation выпустили экстренное обновление безопасности – с версии 2.15.0 проблема была частично устранена. Версия 2.15.0 не учитывает некоторые варианты обработки логов, что оставляет злоумышленникам возможность провести атаку на уязвимую систему.
Исправление 2.15.0 закрывает брешь благодаря отключению lookup JNDI-сообщений. В недефолтных конфигурациях он может быть использован для создания вредоносного input с использованием шаблона JNDI lookup. Это может привести к атаке типа «Отказ в обслуживании» и выполнения произвольного кода. Этому сценарию присвоили отдельный идентификатор CVE-2021-45046.
Эксплуатация CVE-2021-44228 возможна, если для параметра log4j2.formatMsgNoLookups установлено значение false. Для предотвращения атак в патче Log4j 2.15.0 для этого параметра установлено значение true. При обновлении 2.15.0 не следует менять параметр на значение false. Пользователи библиотеки Log4j, которые не обновились, но установили значение true, могут блокировать атаки.
2. CVE-2021-45046 (оценка опасности угрозы по CVSS: 9/10 баллов) – критическая уязвимость позволяет проводить DoS-атаки и удаленно выполнять код. Проблема затрагивает версии Log4j от 2.0-beta9 до 2.15.0 (исключение – 2.12.2).
В Log4j версии 2.15.0 было можно проэксплуатировать уязвимость CVE-2021-44228 при определенных пользовательских настройках конфигурации. В ней был отключен лишь один аспект функционала JNDI по поиску сообщений. В обновлении 2.16 по умолчанию была отключена поддержка JNDI, обработка поиска сообщений была полностью удалена.
3. CVE-2021-45105 (оценка опасности угрозы по CVSS: 7,5/10 баллов) – опасная DoS-уязвимость в системах Java 8, которая позволяет вызвать ошибку отказ в обслуживании и проявляется в виде зацикливания и аварийного завершения при обработке определенных строк.
Уязвимость затрагивает версии Log4j от 2.0-beta9 до 2.16.0. В перечисленных версиях отсутствовала защита от неконтролируемой рекурсии, что позволяло злоумышленнику, проводя манипуляции со значением при подстановке, вызвать зацикливание. Зацикливание приводило к исчерпанию места в стеке и аварийному завершению процесса. Патч выпущен в версии 2.17.0.
4. CVE-2021-4104 (оценка опасности угрозы по CVSS: 8,1/10 баллов) – уязвимость небезопасной десериализации, затрагивающая версии Log4j 1.2. Данная уязвимость затрагивает Log4j 1.2 только в том случае, если она специально настроена для использования JMSAppender, что не является значением по умолчанию. Исправление отсутствует, необходимо обновиться до версии 2.17.0.