Skip to main content

🔥 Уязвимость Log4Shell (CVE-2021-44228) в библиотеке Log4j

9 декабря была опубликована информация об уязвимости нулевого дня в популярной библиотеке логирования log4j версии 2. Уязвимость CVE-2021-44228 (или Log4Shell) позволяет позволяет запустить выполнение кода на удалённой машине при выполнении операций логирования. Её отличительной особенностью является очень лёгкая эксплуатация, так как злоумышленнику достаточно заставить приложение отправить в лог всего одну специальную строку.

Уязвимость распространяется на практически все релизы 2 версии log4j, от 2.0-beta9 до 2.14.1 включительно. Проверить, уязвима ли ваша система к Log4Shell можно несколькими способами. Если знаете где log4j применяется в ваших продуктах, то можете сразу проверить используемые версии самой библиотеки, или же воспользоваться публичными сканерами, которые уже доступны для использования. Например, сканером от BI.ZONE для проверки уже запущенных Java-процессов или сканером от Lunasec, который может найти уязвимые .jar и .war файлы на диске.

Для нас Log4Shell является особенно критичной, так как log4j используется в продуктах Elasticsearch и Logstash, которые входят в состав Smart Monitor. Официальный обновляемый пост с полной информацией по уязвимости в различных компонентах Elastic Stack можно найти на discuss.elastic.co.

В случае Elasticsearch 7.x, для устранения достаточно добавить один параметр к опциям Java-машины:

-Dlog4j2.formatMsgNoLookups=true

Для Logstash 7.x подобного параметра недостаточно и вендор предлагает полностью удалить уязвимый компонент из файла .jar библиотеки:

zip -q -d /logstash-core/lib/jars/log4j-core-2.* org/apache/logging/log4j/core/lookup/JndiLookup.class

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

Elastic Stack, Уязвимость