0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>В начале недели эксперт по кибербезопасности Alibaba Чен Жаожун обнаружил критическую уязвимость в Java-библиотеке Log4j, которая используется в сотнях тысяч приложений по всему миру. Уязвимость позволяет получить удаленный доступ к серверу, на котором хранится приложение, и запустить на нем произвольный код. Вместе с экспертами разбираемся, почему библиотека так популярна, в чем суть уязвимости и как ее можно устранить.</strong></p>
1
<p><strong>В начале недели эксперт по кибербезопасности Alibaba Чен Жаожун обнаружил критическую уязвимость в Java-библиотеке Log4j, которая используется в сотнях тысяч приложений по всему миру. Уязвимость позволяет получить удаленный доступ к серверу, на котором хранится приложение, и запустить на нем произвольный код. Вместе с экспертами разбираемся, почему библиотека так популярна, в чем суть уязвимости и как ее можно устранить.</strong></p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Что такое Log4j и почему она так популярна</a></li>
3
<ul><li><a>Что такое Log4j и почему она так популярна</a></li>
4
<li><a>В чем опасность</a></li>
4
<li><a>В чем опасность</a></li>
5
<li><a>Что делать с уязвимостью</a></li>
5
<li><a>Что делать с уязвимостью</a></li>
6
<li><a>Выводы</a></li>
6
<li><a>Выводы</a></li>
7
</ul><h2>Что такое Log4j и почему она так популярна</h2>
7
</ul><h2>Что такое Log4j и почему она так популярна</h2>
8
<p>Log4j - часть проекта Apache Logging Project. Это библиотека для логирования, которая помогает анализировать поток выполняющихся инструкций на продакшене или в тестовом окружении. С ее помощью можно пометить все вызовы текстовыми инструкциями - это сильно упрощает процесс локализации проблем.</p>
8
<p>Log4j - часть проекта Apache Logging Project. Это библиотека для логирования, которая помогает анализировать поток выполняющихся инструкций на продакшене или в тестовом окружении. С ее помощью можно пометить все вызовы текстовыми инструкциями - это сильно упрощает процесс локализации проблем.</p>
9
<p>Библиотеку используют сотни тысяч программ, игр, облачных серверов и корпоративных приложений, в том числе от Amazon, Apple iCloud, Cisco, Cloudflare, ElasticSearch, Red Hat, Steam, Tesla и Twitter. В целом пользователей Log4j можно описать как очень крупные компании, которые по тем или иным причинам не используют актуальные версии Java. Чаще всего это энтерпрайз-сегмент, где любое обновление языка, фреймворка или библиотеки - большая проблема.</p>
9
<p>Библиотеку используют сотни тысяч программ, игр, облачных серверов и корпоративных приложений, в том числе от Amazon, Apple iCloud, Cisco, Cloudflare, ElasticSearch, Red Hat, Steam, Tesla и Twitter. В целом пользователей Log4j можно описать как очень крупные компании, которые по тем или иным причинам не используют актуальные версии Java. Чаще всего это энтерпрайз-сегмент, где любое обновление языка, фреймворка или библиотеки - большая проблема.</p>
10
<p>В энтерпрайз-сегменте наиболее популярны приложения, разработанные на технологии JavaEE/JakartaEE, а также с использованием Spring. В экосистеме Spring особую популярность последнее время получил фреймворк Boot, в котором в качестве дефолтной библиотеки логирования используется LogBack. Для компаний, которые используют Spring Boot (если не брать в расчет кастомное подключение Log4j2), уязвимость не грозит.</p>
10
<p>В энтерпрайз-сегменте наиболее популярны приложения, разработанные на технологии JavaEE/JakartaEE, а также с использованием Spring. В экосистеме Spring особую популярность последнее время получил фреймворк Boot, в котором в качестве дефолтной библиотеки логирования используется LogBack. Для компаний, которые используют Spring Boot (если не брать в расчет кастомное подключение Log4j2), уязвимость не грозит.</p>
11
<h2>В чем опасность</h2>
11
<h2>В чем опасность</h2>
12
<p>Уязвимость CVE-2021-44228 (или Log4Shell) относится к классу<a>Remote Code Execution</a>и присутствует только в версиях Log4j с 2.0-beta9 до 2.14.1.</p>
12
<p>Уязвимость CVE-2021-44228 (или Log4Shell) относится к классу<a>Remote Code Execution</a>и присутствует только в версиях Log4j с 2.0-beta9 до 2.14.1.</p>
13
<p>Log4Shell для подключения к серверу использует JNDI (Java Naming and Directory Interface). Это API, которое предоставляет единообразный механизм взаимодействия Java-программы с различными службами имен и каталогов. Зная JNDI-имя LDAP-сервера, базы данных или месседж-брокера, можно получить доступ к ним, используя операцию lookup.</p>
13
<p>Log4Shell для подключения к серверу использует JNDI (Java Naming and Directory Interface). Это API, которое предоставляет единообразный механизм взаимодействия Java-программы с различными службами имен и каталогов. Зная JNDI-имя LDAP-сервера, базы данных или месседж-брокера, можно получить доступ к ним, используя операцию lookup.</p>
14
<p>Еще одно уязвимое место касается безопасности строк. Часто бывает так, что переменные раскрываются не только в конфигурационном файле, важном звене взаимодействия с библиотекой логирования, но и в строках. В ситуации с небезопасными строками библиотека сканирует сообщения пользователей и если видит в них исходный код, исполняет его. После этого хакер может загрузить вредоносный код на сервер - исследователи из SecurityLab описывают случаи, когда Log4Shell использовали для майнинга криптовалют или для DDoS-атак.</p>
14
<p>Еще одно уязвимое место касается безопасности строк. Часто бывает так, что переменные раскрываются не только в конфигурационном файле, важном звене взаимодействия с библиотекой логирования, но и в строках. В ситуации с небезопасными строками библиотека сканирует сообщения пользователей и если видит в них исходный код, исполняет его. После этого хакер может загрузить вредоносный код на сервер - исследователи из SecurityLab описывают случаи, когда Log4Shell использовали для майнинга криптовалют или для DDoS-атак.</p>
15
<h2>Что делать с уязвимостью</h2>
15
<h2>Что делать с уязвимостью</h2>
16
<p>Лучший совет, который можно дать в сложившейся ситуации -<a>обновить</a> Log4j до версии 2.15 или Java до версии 11. Если обновление - это проблема, есть несколько альтернативных решений:</p>
16
<p>Лучший совет, который можно дать в сложившейся ситуации -<a>обновить</a> Log4j до версии 2.15 или Java до версии 11. Если обновление - это проблема, есть несколько альтернативных решений:</p>
17
<ul><li>Если приложение использует Log4j и запускается через команду java -d, можно выставить параметру system property значение true: java -Dlog4j2.formatMsgNoLookups=true.</li>
17
<ul><li>Если приложение использует Log4j и запускается через команду java -d, можно выставить параметру system property значение true: java -Dlog4j2.formatMsgNoLookups=true.</li>
18
<li>Еще один вариант - подтянуть текущую настройку из переменных окружения (LOG4J_FORMAT_MSG_NO_LOOKUPS=true). Во втором случае никакие дополнительные параметры выставлять не нужно, они автоматически подтянутся из окружения.</li>
18
<li>Еще один вариант - подтянуть текущую настройку из переменных окружения (LOG4J_FORMAT_MSG_NO_LOOKUPS=true). Во втором случае никакие дополнительные параметры выставлять не нужно, они автоматически подтянутся из окружения.</li>
19
</ul><p>Несколько более сложных решений описаны<a>здесь</a>.</p>
19
</ul><p>Несколько более сложных решений описаны<a>здесь</a>.</p>
20
<h2>Выводы</h2>
20
<h2>Выводы</h2>
21
<p>Большинство уязвимостей возникают в старых версиях языков, библиотек и фреймворков, поэтому нужно стараться регулярно обновлять их. Для больших компаний это непозволительная роскошь, но безопасные и не подверженые уязвимостям приложения требуют регулярного повышения версий.</p>
21
<p>Большинство уязвимостей возникают в старых версиях языков, библиотек и фреймворков, поэтому нужно стараться регулярно обновлять их. Для больших компаний это непозволительная роскошь, но безопасные и не подверженые уязвимостям приложения требуют регулярного повышения версий.</p>
22
<p>Кроме того, полезно периодически (раз в три-шесть месяцев) проводить аудит безопасности систем, которые эксплуатируются в продакшене. Не менее важно следовать рекомендациям, которые содержатся в отчетах службы безопасности. Это помогает выявлять общие проблемы и справляться со срочными изменениями (правда, с некоторыми ограничениями).</p>
22
<p>Кроме того, полезно периодически (раз в три-шесть месяцев) проводить аудит безопасности систем, которые эксплуатируются в продакшене. Не менее важно следовать рекомендациям, которые содержатся в отчетах службы безопасности. Это помогает выявлять общие проблемы и справляться со срочными изменениями (правда, с некоторыми ограничениями).</p>