В популярной библиотеке журналирования Log4j, которая является частью общего проекта «Apache Logging Project», обнаружили критическую уязвимость Log4Shell. В этой статье я расскажу, как защититься от уязвимости Log4Shell.
Еще по теме: Способы эксплуатации уязвимости Log4j
Уязвимость Log4Shell
В декабре 2021 года программисты Apache Software Foundation выкатили экстренное обновление безопасности, исправляющее критическую уязвимость (CVE-2021-44228) в библиотеке журналирования Log4j. Срочность выпуска обновления объяснялась тем, что хакеры уже начали выкладывать в открытый доступ PoC-эксплоиты, объясняя, что эксплуатировать уязвимость можно удаленно, причем для этого не нужны особые знания и технические навыки.
Уязвимость получила название Log4Shell и по шкале оценки уязвимостей набрала десять из десяти возможных балов. Баг Log4Shell позволяет удаленное выполнение произвольного кода (RCE), причем вредонос может попасть в систему различными способами, ведь для реализации атаки достаточно, чтобы необходимая запись оказалась в логах.
Изначально уязвимость была обнаружена при поиске багов на серверах Minecraft, но библиотека Log4j присутствует практически во всех корпоративных приложениях и серверах Java. Она присутствует в каждом корпоративном продукте, выпущенным Apache Software Foundation, включая:
- Apache Flink
- Apache Flume
- Apache Struts
- Apache Druid
- Apache Solr
- Apache Dubbo
- Apache Kafka
Также Log4j часто используют в проектах с открытым исходным кодом, в таких как: Redis, Ghidra, Elasticsearch, Elastic Logstash.
Получается, что, компании, использующие какой-нибудь из перечисленных выше продуктов, могут быть косвенно уязвимы перед подобного рода атакой, не имея об этом представления. Специалисты ИБ предупреждают, что уязвимости Log4Shell могут быть подвержены такие гиганты как: Amazaon Apple, Twitter, Steam, Cloudflare, Baidu и т.д.
Принцип работы уязвимости Log4Shell очень простой: баг вынуждает приложения и серверы работающие на Java, где используется Log4j, сохранять в логе специальную строку. Когда сервер или приложение обработают лог, строка заставит систему скачать и выполнить вредоносный скрипт залитый на какой-нибудь сайт. Это может привести к полному захвату уязвимого сервера или приложения, со всеми вытекающими.
К большому сожалению, из‑за повсеместной распространенности Log4j ИБ‑эксперты уверены, что проблема Log4Shell имеет все шансы стать не просто худшей уязвимостью 2021 года, но и самой большой головной болью последней пятилетки.
Поэтому сейчас все призывают всех как можно скорее проверить и защитить свои системы от атак, установить патчи и принять иные меры предосторожности. Перечислим, что можно и нужно для этого сделать.
Защита от уязвимости Log4Shell
Лучший вариант, разумеется, — обновить Log4j до последней актуальной версии: на данный момент это версия 2.16. Для удобства администраторов специалисты из компании Huntress Labs подготовили бесплатный сканер (ссылка удалена про причине удаления сайта), который компании могут использовать для оценки своих собственных систем на уязвимость.
Эксперты компании Cybereason и вовсе предложили «вакцину» от Log4Shell, получившую название Logout4Shell. «Вакцина» представляет собой скрипт, удаленно эксплуатирующий баг для отключения нужных настроек в уязвимом экземпляре Log4Shell. По сути, пейлоад в данном случае безвреден и отключает параметр trustURLCodebase на удаленном сервере для снижения рисков.
Специалисты Cybereason объясняют, что угрозу можно смягчить, установив для параметра log4j2.formatMsgNoLookups значение true или удалив класс JndiLookup.
Кроме того, если на сервере Java runtimes >= 8u121, то по умолчанию установлено значение false для параметров:
1 |
com.sun.jndi.rmi.object.trustURLCodebase |
1 |
com.sun.jndi.cosnaming.object.trustURLCodebase |
Это тоже позволяет сократить риски.
Списки уязвимых
С обнаружения уязвимости Log4Shell прошло слишком мало времени, и, если учесть огромный охват проблемы, исчерпывающий список того, что уязвимо, а что нет, по‑прежнему недоступен даже для таких правительственных агентств, как CISA.
Списки уязвимых продуктов, а также бюллетеней безопасности и сообщений различных компаний пока составляются исключительно силами экспертов и сообщества. Один из таких обновляющихся и детальных перечней курируют специалисты Национального центра кибербезопасности Нидерландов, и ознакомиться с ним можно на GitHub.
Аналитики CISA также собирают из открытых источников реакции и рекомендации производителей и тоже публикуют список известных патчей и уязвимых решений на GitHub.
Еще по теме: Уязвимости в сервисах совместной разработки
Полезные ссылки:
- Гайд CISA по исправлению уязвимости
- Хеши уязвимых версий Log4j
- Образцы малвари и пейлоадов, распространяющихся через Log4Shell
- Индикаторы компрометации