Комментарии 8
Гуглопереводчик?
У нас проект на Spring Boot. По умолчанию используется logback, но среди транзитивных зависимостей есть "org.apache.logging.log4j:log4j-api:2.10.0" (core не нашел). Нужно ли беспокоиться и что-то делать?
Все зависит от версии logback.
В http://mailman.qos.ch/pipermail/logback-user/2021-December/005168.html написано:
We urge you to upgrade to logback 1.2.8 as soon as possible.
Модуль log4j-api
не содержит уязвимости:
Note that only the log4j-core JAR file is impacted by this vulnerability. Applications using only the log4j-api JAR file without the log4j-core JAR file are not impacted by this vulnerability.
На 20 декабря 2021 правильнее обновляться сразу на 2.17 в которой исправлены ещё и CVE-2021-45105.
Да, я планирую себе на футболку QR-код с автопроверкой сделать и по логам сервера оценить количество <s>дырявых</s> систем слежения с поддержкой QR-кодов в окружающем мире.
Да просто все проверяется.
либо простейшая программа консольная из 10 строк на java|python|что нравится, которая слушает сокет и выдает на экран факт TCP/IP коннекта либо nginx (если импотентен написать эти 10 строк, а потентен настроить nginx)
public static void main(String[] args) throws Throwable {
ServerSocket ss = new ServerSocket(6666);
while (true) {
Socket s = ss.accept();
System.out.println("-------------- Client accepted --------------");
ну и сделать так, что бы логе всех программ прошла нужная строка типа ${jndi:ldap://localhost:6666}
К слову, даже если в лог не выводится строка с ${jndi.. (не тот уровень логирования, например), то SpringBoot все равно ломится на ldap при получении чего ни будь типа
curl -H "qqqqqq: ${jndi:ldap://localhost:6666}" --url http://localhost:8080/version
Так же себя ведут и не SpringBoot web сервис c jetty и grizzly (что сам проверял).
Ну или если не web приложенее, то по принципу "в лог должно попасть ..".
Это самый надежный способ проверки наличия уязвимости и что она еще не купирована удалением ли класса или другим методом.
Правда отличить от какой программы (когда сервисов в цепочке обработки мого) пошел запрос не просто, но зато сразу видно что не все купировано.
А по прикладным логам программ и не поймешь. Разве что времени ответа (log4j2 притормаживает с выводом строчки где то на 3-5 сек если нет ответа от ldap сервера). Но если логирование ассинхронное и в лог по уровню логирования ничего не попадает, то вообще не поймешь ломится куда или нет.
Как проверить, зависит ли Java проект от уязвимой версии Log4j