Закрытие уязвимости log4shell в Elasticsearch

Aliexpress IN

Log4Shell (CVE-2021-44228) - уязвимость, обнаруженная в биб­лиоте­ке жур­налиро­вания Log4j, позволяющая выполнить произвольный код в атакуемой системе. Elasticsearch использует модуль Log4j для ведения журналов,  но прямой уязвимости выполнения произвольного кода в нем нет.

Elasticsearch

 

 

Обновление Elasticsearch до последней версии

На самом деле это самое правильное решение, помимо закрытия уязвимости, будут исправлены другие ошибки и повышена производительность. Обновление в пределах установленной ветки, не потребует каких либо действий, кроме перезапуска сервиса.

Добавление опции -Dlog4j2.formatMsgNoLookups в Elasticsearch

В настройки Elastciseach возможно добавить опцию запрещающую выполнение внешних запросов. Это не закрывает уязвимость, но предотвратит ее использование.

Для этого в файл /etc/elasticsearch/jvm.options необходимо добавить опцию (лучше всего ее добавить в секцию # log4j, что бы потом не искать):

-Dlog4j2.formatMsgNoLookups=true

и перезапустить elasticsearch

service elasticsearch restart

Удаление класса JndiLookup из библиотеки log4j

Довольно рискованный метод, позволяет закрыть уязвимость Log4Shell в Elasticsearch 5.0.0-5.6.10 и 6.0.0-6.3.2

1. Определим имя библиотеки ядра

ls -l /usr/share/elasticsearch/lib/log4j-core-*.jar
ls -l /usr/share/elasticsearch/lib/log4j-core-*.jar
... /usr/share/elasticsearch/lib/log4j-core-2.11.1.jar

2. Делаем резервуарную копию, на случай если Elasticsearch не запустится или возникнут ошибки в работе

zip ./backup-log4j.zip /usr/share/elasticsearch/lib/log4j-core-2.11.1.jar

3. Удаляем уязвимый класс из библиотеки

cd /usr/share/elasticsearch/lib/
zip -d log4j-core-2.11.1.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

4. Перезапстить ноду Elasticsearch

service elasticsearch restart
Добавить комментарий