Das Threat-Intelligence-Team von Microsoft, das für die Auswertung und Gefahrenanalyse von Sicherheitslücken und Schadsoftware zuständig ist, hat eine erste Analyse zu der Log4Shell genannten Lücke (CVE-2021-44228) in der Logging-Bibliothek Log4J veröffentlicht. Dort betont das Team: Inzwischen muss jedes System mit Log4J als angegriffen betrachtet werden.

Forensik statt Prävention

Wörtlich heißt es dazu in der Auswertung von Microsoft: “Weil 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.”

Wie die Lücke im Detail funktioniert

Um das Vorgehen der Angreifer beim Ausnutzen der Lücke zu verstehen, ist es zunächst wichtig zu wissen, was die Bibliothek Log4J eigentlich genau macht: Als Logging-Anwendung zeichnet das Tool Meldungen von Software auf, zum Beispiel Fehlermeldungen, damit diese später noch nachvollzogen werden können.

Normalerweise werden damit aber auch bestimmte weitere Zeichenketten aufgezeichnet, die von außen an eine Anwendung kommen. Dazu gehören beispielsweise der User-Agent eines Browsers, die zur Anmeldung genutzte Email-Adresse, Nutzernamen oder auch über eine API verschickte Parameter.

Statt aber die Strings einfach nur in eine Log-Datei zu schreiben, werden diese Zeichenketten unter bestimmten Umständen auch interpretiert. Das ist nötig für die sogenannten Lookups in der Log4J-Anwendungslogik, mit denen zusätzliche Informationen zur Konfiguration von Log4J hinzugefügt werden können. Das können zum Beispiel die Attribute eines Docker-Containers oder auch Detailinformationen zur benutzten Java-Instanz sein.

Für diese Lookup-Funktionen unterstützt Log4J das Java Naming and Directory Interface (JNDI), das dazu dient, Referenzen auf Objekte oder Klassen zu laden, und zwar auch von entfernten Rechnern – und genau hier liegt der Hase im Pfeffer. Darüber können alle Arten von Schadcode auf dem angegriffenen Rechner abgelegt und ausgeführt werden.

In Log4J sollen damit eigentlich 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.

Übersichtsgrafik von Govcert.ch

Wie das funktioniert und was man dagegen tun kann (rot markiert), zeigt die übersichtliche Artikelgrafik von Govcert.ch.