Eine kritische Schwachstelle in der Programmbibliothek „log4j“ hat möglicherweise Auswirkungen auf alle aus dem Internet erreichbaren Java-Anwendungen, die mit Hilfe dieses Frameworks Protokolldaten generieren. Auch auf internen IT-Systemen kann der unter CVE-2021-44228 (Common Vulnerabilities and Exposures) dokumentierte Angriffsvektor ausgenutzt werden, sofern diese externe Daten entgegennehmen oder verarbeiten.
Die weitverbreitete Java-Programmbibliothek „log4j“ für die performante Aggregation von Protokolldaten weist kritische Lücken in den Versionen 2.0 bis 2.15.0 auf. Angreifern ermöglicht dies auf dem Zielsystem eigenen Schadcode durch Nachladen oder direkt in der Abfrage auszuführen und so das betroffene IT-System bzw. die Anwendung zu kompromittieren. Die Gefahr besteht, wenn „log4j“ für die Protokollierung der von Nutzern beeinflussbaren Zeichenketten eingesetzt wird.
Sicherheitswarnung des BSI
Das Bundesamt für Sicherheit in der Informationstechnik (BSI) hat zu der „log4j“-Schwachstelle eine Cyber-Sicherheitswarnung mit der höchsten Einstufung „4 / Rot“ herausgegeben. Nach der Ansicht des BSI ist die IT-Bedrohungslage als extrem kritisch einzustufen. Ein Ausfall des Dienstes und die damit oftmals einhergehende Unterbrechung des Regelbetriebs könne nicht ausgeschlossen werden.
Durch aktuell weltweite Massenscans und die oftmals noch fehlenden Patches für betroffene Produkte, sei eine Infektion von anfälligen IT-Systemen und Anwendungen durch Ausnutzen von „Log4Shell“ nicht auszuschließen. Es gibt bereits erste Meldungen über erfolgreiche Kompromittierungen mit Kryptominern und Hinweise darauf, dass die Schwachstelle auch von Botnetzen ausgenutzt wird.
Was kann unternommen werden?
IT-Systeme und Anwendungsdienste sollten – insbesondere in das Internet – nur solche Verbindungen aufbauen dürfen, die für den Einsatzzweck zwingend notwendig sind. Alle weiteren Zugriffe sollten durch angemessene Kontrollinstanzen wie bspw. Firewalls unterbunden werden. Die Installation von zusätzlichen Web-Application-Firewalls (WAF) kann auf Anwendungsebene bekannte Angriffsmuster über das Hypertext Transfer Protocol (HTTP) verhindern.
Ein Update auf die aktuelle Version 2.16.0 von „log4j“ sollte dennoch die erste Maßnahme sein, sobald dies für das eingesetzte und betroffene Software-Produkt möglich ist. Sofern „log4j“ als eigenständige JAR-Datei vorliegt, kann diese ggf. direkt ausgetauscht werden. Häufig kann die Aktualisierung von Bibliotheken aber nicht zeitnah erfolgen, daher sollten folgende mitigierende Maßnahmen ergriffen werden:
Die Java Virtual Machine sollte mit dem Argument „-Dlog4j2.formatMsgNoLookups=True“ gestartet werden. Alternativ kann auch die Umgebungsvariable „LOG4J_FORMAT_MSG_NO_LOOKUPS“ auf „true“ gesetzt werden oder die Java-Klasse „JndiLookup“ aus dem Klassenpfad mit „zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class” gelöscht werden.
Die „log4j“ Versionen 1.x sind von dieser Schwachstelle nach aktuellem Kenntnisstand nicht betroffen. Allerdings werden die Versionen mit 1.x nicht mehr vom Hersteller unterstützt. Sie sind End-of-Life und durch andere Schwachstellen verwundbar. Eingesetzte „log4j“-Versionen sollten ebenfalls auf eine nicht-verwundbare Version aktualisiert werden.
Fazit
Zero-Day-Schwachstellen können besonders kritische Auswirkungen nach sich ziehen, da Angreifer Lücken in IT-Systemen oder Anwendungen entdeckt haben und ausnutzen konnten, bevor der Hersteller darauf aufmerksam geworden ist. Der Schwachstelle „Log4Shell“ sollte schnellstmöglich durch die Aktualisierung auf die nicht-verwundbare Version 2.16.0 der Programmbibliothek „log4j“ begegnet werden. Ist ein Update nicht möglich sollten die oben beschriebenen mitigierenden Maßnahmen vorgenommen werden und sich auf den Webseiten der eingesetzten Hersteller über anstehende Patches und Workarounds informiert werden. Ggf. sollten die angreifbaren Anwendungen vorübergehend deaktiviert werden. Konnte bereits eine Aktualisierung vorgenommen werden, so sollten auch diese IT-Systeme und Anwendungen auf eine mögliche Kompromittierung untersucht werden.
Weitere Informationen zur Betroffenheit von Produkten und der Bereitstellung von Aktualisierungen können den beiden folgenden GitHub-Repositories entnommen werden:
- Security Advisories / Bulletins linked to Log4Shell (CVE-2021-44228)
- Security Advisories linked to Log4Shell (CVE-2021-44228)
- CISA Log4j (CVE-2021-44228) Vulnerability Guidance
Fabian Mangels
17. Dezember 2021 @ 14:18
Übrigens gilt bereits seit dem JDK 8u121 (17.01.2017):
„Remote class loading via JNDI object factories stored in naming and directory services is disabled by default.“
(https://www.oracle.com/java/technologies/javase/8u121-relnotes.html)
Dieses Feature, welches für Log4Shell verantwortlich ist, ist standardmäßig deaktiviert und muss explizit aktiviert werden.
Anonymous
15. Dezember 2021 @ 8:24
Als Ergänzung sei noch erwähnt, dass der vorgeschlagene Fix leider nicht vollständige Abhilfe schafft. Es gibt eine weitere (immerhin nur denial of service) Lücke, die zwischenzeitlich in Version 2.16 geschlossen wurde:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046
Fabian Mangels
15. Dezember 2021 @ 9:46
Vielen Dank für Ihren Hinweis!
Die Version 2.16 der log4j-Bibliothek sollte unverzüglich eingespielt werden, um sich besser vor der Log4Shell-Lücke und einem möglichen DoS-Angriff zu schützen.
Zur Nachverfolgung weiterer Änderungen sollten in diesem Zusammenhang der Changelog und die Download-Seite beobachtet werden.
Viele Grüße
Fabian Mangels