В интернете появились новости о критической уязвимости CVE-2021-44228 в библиотеке Apache Log4j (уровень опасности 10 из 10 по шкале CVSS). Эта библиотека используется миллионами Java-приложений для регистрации сообщений об ошибках. Что еще хуже, злоумышленники уже активно используют эту уязвимость в атаках. Поэтому Apache Foundation рекомендует всем разработчикам обновить библиотеку до версии 2.15.0, а если это невозможно, воспользоваться одним из методов, описанных на странице Apache Log4j Security Vulnerabilities.
Чем опасна уязвимость CVE-2021-44228
Уязвимость CVE-2021-44228, также получившая названия Log4Shell и LogJam, относится к классу Remote Code Execution. Если злоумышленникам удастся проэксплуатировать ее на одном из компьютеров, то они смогут исполнять на нем произвольный код. Потенциально это позволит им захватить полный контроль над системой.
Что делает CVE-2021-44228 особенно опасной — это простота эксплуатации: успешную атаку через эту уязвимость может осуществить даже неопытный хакер. По словам исследователей, злоумышленникам достаточно заставить приложение записать в лог всего одну строку, в результате чего им удастся подгрузить в приложение собственный код из-за функции message lookup substitution.
В Интернете уже можно найти рабочие доказательства осуществимости (PoC) атак при помощи CVE-2021-44228. Поэтому неудивительно, что различные компании, работающие в сфере кибербезопасности, уже регистрируют массовое сканирование сети в поисках уязвимых приложений, а также атаки на ханипоты.
Обнаружена уязвимость исследователем Ченом Жаожуном (Chen Zhaojun) из Alibaba Cloud Security Team.
Что такое Apache Log4J и почему эта библиотека так распространена?
Apache Log4j — это часть проекта Apache Logging Project, библиотека, которая служит для ведения логов. По большому счету, ее применение является одним из самых простых способов ведения журнала ошибок, поэтому большинство Java-разработчиках применяют именно ее.
Библиотека используется в разработках многих крупнейших производителей ПО, в том числе Amazon, Apple iCloud, Cisco, Cloudflare, ElasticSearch, Red Hat, Steam, Tesla и Twitter. Из-за настолько широкой распространенности библиотеки, исследователи ожидают увеличение количества атак на уязвимые серверы в течении следующих нескольких дней.
#Log4Shell pic.twitter.com/1bKDwRQBqt
— Florian Roth (@cyb3rops) December 10, 2021
Какие версии библиотеки Log4j уязвимы и как защитить серверы от атак?
Уязвимы практически все версии Log4j, начиная с 2.0-beta9 и заканчивая 2.14.1. Самый простой и эффективный метод защиты от Log4Shell — установка наиболее свежей версии библиотеки, 2.15.0. Скачать ее можно на страничке проекта.
Если это по каким-то причинам невозможно, то в случае с версиями библиотеки от 2.10 до 2.14.1 Apache Foundation рекомендует установить системное свойство log4j2.formatMsgNoLookups, или же присвоить переменной окружения LOG4J_FORMAT_MSG_NO_LOOKUPS значение true.
Для защиты более ранних релизов Log4j (от 2.0-beta9 до 2.10.0) разработчики библиотеки рекомендуют убрать класс JndiLookup из classpath: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class.
Кроме того, мы рекомендуем не забывать о необходимости установки защитных решений на серверы — во многих случаях это позволит выявить запуск вредоносного кода и остановить развитие атаки.