Update#9 - Kritische 0-day Sicherheitslücke in Apache Log4j Bibliothek - Updates und Workarounds verfügbar
10. Dezember 2021
Update: 13. Dezember 2021, 12:40
Update: 13. Dezember 2021, 14:20
Update: 14. Dezember 2021, 10:40
Update: 14. Dezember 2021, 13:10
Update: 15. Dezember 2021, 11:00
Update: 17. Dezember 2021, 14:00
Update: 20. Dezember 2021, 09:00
Update: 23. Dezember 2021, 09:15
Update: 29. Dezember 2021, 11:15
Beschreibung
Die populäre Open-Source Logging-Bibliothek Apache Log4j weist eine schwerwiegende 0-day-Sicherheitslücke auf, die sich durch simples Loggen eines speziellen Strings ausnützen lässt. Mittels JNDI wird ein Look-up auf einen von den Angreifer:innen kontrollierten Server ausgelöst und der zurückgelieferte Code ausgeführt. Entsprechender PoC-Exploit-Code wurde bereits auf GitHub veröffentlicht.
CVE-Nummern: CVE-2021-44228 (lt. Apache Log4j GitHub, derzeit noch nicht offiziell bestätigt)
CVSS Base Score: N/A
Update: 13. Dezember 2021, 12:40
Die CVE-Nummer ist nun offiziell bestätigt: https://nvd.nist.gov/vuln/detail/CVE-2021-44228
Apache gibt einen Base CVSS Score von 10.0 an: https://logging.apache.org/log4j/2.x/security.html
Update: 13. Dezember 2021, 14:20
Detaillierte Informationen zu den Exploits sowie einige Gegenmaßnahmen finden Sie auch in folgendem Blogpost des Schweizer GovCERTs: https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/
Update: 15. Dezember 2021, 11:00
Ein zusätzlicher Angriffsvektor wurde identifiziert und wird als CVE-2021-45046 geführt.
Weitere Informationen und mögliche Gegenmaßnahmen finden Sie in unserem Special Report zu Log4Shell.
Update: 17. Dezember 2021, 14:00
Der CVSS Score von CVE-2021-45046 wurde von 3.7 (limited Denial of Service) auf 9.0 (limited Remote Code Execution) erhöht.
Update: 20. Dezember 2021, 09:00
Apache Log4j ist anfällig für die Schwachstelle CVE-2021-45105 (Denial of Service) mit einem CVSS Score von 7.5. Einem Artikel von Snyk zufolge, existiert derzeit noch kein PoC-Exploit.
Update: 29. Dezember 2021, 11:15
Die Log4j-Bibliothek in der Version 2.17.0 ist anfällig für CVE-2021-44832 (RCE mit einem CVSS Score von 6.6). Das Nachladen einer von Angreifer:innen bereitgestellten Konfiguration mit einer JNDI URI als Datasource für einen JDBC Appender ermöglicht das Laden und Ausführen von Schadcode wie schon bei CVE-2021-44228.
Auswirkungen
Ein erfolgreiches Ausnützen der Schwachstelle kann zu einer vollständigen Kompromittierung des betroffenen Systems führen.
Update: 20. Dezember 2021, 09:00
Erfolgreiches Ausnützen der Schwachstelle CVE-2021-45105 kann zu einem Absturz der Applikation führen.
Update: 29. Dezember 2021, 11:15
Erfolgreiches Ausnützen der Schwachstelle CVE-2021-44832 kann zu einer vollständigen Kompromittierung des betroffenen Systems führen.
Betroffene Systeme
- Alle Apache log4j Versionen von 2.0 bis inkl. 2.14.1 und sämtliche Frameworks (z.B. Apache Struts2, Apache Solr, Apache Druid, Apache Flink, etc.), welche diese Versionen verwenden. Update: 14. Dezember 2021, 10:40: Laut der Sicherheitsfirma LunaSec sind die JDK-Versionen 6u211, 7u201, 8u191, und 11.0.1 in der Default-Konfiguration nicht betroffen, da diese kein Laden einer Remote Codebase erlaubt. Ist jedoch die Option
com.sun.jndi.ldap.object.trustURLCodebase
auftrue
gesetzt, ist ein Angriff weiterhin möglich.
Update: 13. Dezember 2021, 12:40
NCSC-NL, das nationale CERT der Niederlande, hat eine Liste betroffener Software auf GitHub veröffentlicht:
https://github.com/NCSC-NL/log4shell/tree/main/software
Diese Liste wird laufend erweitert.
Update: 14. Dezember 2021, 10:40
Einem Tweet von Jan Schaumann zufolge sind alle Java-Applikationen, welche die entsprechenden Log4j Versionen verwenden, als verwundbar zu betrachten, da sich die Option com.sun.jndi.ldap.object.trustURLCodebase true
mittels serialisierter LDAP Payloads umgehen lässt, sofern sich die in der Payload serialisierten Klassen im Classpath befinden.
Update: 20. Dezember 2021, 09:00
CVE-2021-45105 betrifft die Apache Log4j Versionen 2.0-beta9 bis 2.16.0.
Update: 29. Dezember 2021, 11:15
CVE-2021-44832 betrifft die Versionen 2.0-beta7 bis 2.17.0, jedoch nicht die Security-Releases 2.3.2 (Java 6), und 2.12.4 (Java 7)
Abhilfe
Update von Apache Log4j auf log4j-2.15.0-rc2, da die ursprünglich als gefixt angegebene Version log4j-2.15.0-rc1 die Schwachstelle anscheinend nur unzureichend behebt. Sollte ein Upgrade nicht zeitnah möglich sein, können Betreiber:innen verwundbarer Systeme als Workaround den Server mit der JVM-Option -Dlog4j2.formatMsgNoLookups=true
starten.
Update: 13. Dezember 2021, 12:40
Die Workarounds funktionieren nicht bei allen Versionen gleich:
- Update 15. Dezember 2021, 11:00: Bei Versionen größer oder gleich 2.10 ist es ausreichend, die Systemeinstellung
log4j2.formatMsgNoLookups
oder die UmgebungsvariableLOG4J_FORMAT_MSG_NO_LOOKUPS
auftrue
zu setzen. - Bei Versionen zwischen 2.0-beta9 und 2.10.0 muss die Klasse
JndiLookupclass
aus dem Klassenpfad ("class path") gelöscht werden. Das funktioniert z.B. mit folgendem Befehl:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
NCSC-NL hat auch eine Liste von Gegenmaßnahmen auf GitHub veröffentlicht:
https://github.com/NCSC-NL/log4shell/tree/main/mitigation
Update: 14. Dezember 2021, 13:10
Apache Log4j Version 2.16 steht zum Download bereit. In dieser Version ist das Java Naming and Directory Interface (JNDI) standardmäßig deaktiviert. Das Interface kann zwar im Bedarfsfall wieder aktiviert werden, stellt jedoch in ungeschützen Umgebungen ein hohes Sicherheitsrisiko dar.
Update: 15. Dezember 2021, 11:00
Aufgrund des neuen Angriffsvektors in CVE-2021-45046 ist die Mitigation mittels log4j2.formatMsgNoLookups
bei bestimmten Log4j-Konfigurationen unwirksam. Es wird daher dringend empfohlen, auf die gefixte Version 2.16 zu aktualiseren. Sollte das nicht möglich sein, muss die Klasse JndiLookupClass
, wie oben beschrieben, aus dem Classpath gelöscht werden. Ob und in welchem Ausmaß das Entfernen der Klasse jedoch die Funktionalität der betroffenen Applikation beeinträchtigt, lässt sich nicht allgemein sagen.
Update: 20. Dezember 2021, 09:00
Update auf Apache Log4j 2.17.
Update: 23. Dezember 2021, 09:15
Laut den aktualisierten Patch Notes von Apache, sind die Sicherheitslücken CVE-2021-45046 und CVE-2021-45105 in den folgenden Versionen behoben:
- CVE-2021-45046: Log4j 2.16.0 (Java 8) und Log4j 2.12.2 (Java 7)
- CVE-2021-45105: Log4j 2.17.0 (Java 8), 2.12.3 (Java 7) und 2.3.1 (Java 6)
Update: 29. Dezember 2021, 11:15
Laut den aktualisierten Patch Notes von Apache, ist die Sicherheitslücke CVE-2021-44832 in den folgenden Versionen behoben:
- Log4j 2.3.2 (Java 6), 2.12.4 (Java 7), und 2.17.1 (Java 8 und höher)
Hinweis
Generell empfiehlt CERT.at, sämtliche Software aktuell zu halten und dabei insbesondere auf automatische Updates zu setzen. Regelmäßige Neustarts stellen sicher, dass diese auch zeitnah aktiviert werden.
Informationsquelle(n):
LunaSec Artikel
https://www.lunasec.io/docs/blog/log4j-zero-day/
Cyber Kendra Artikel
https://www.cyberkendra.com/2021/12/worst-log4j-rce-zeroday-dropped-on.html
PoC-Exploit auf GitHub
https://github.com/tangxiaofeng7/apache-log4j-poc
Apache Advisory
https://github.com/advisories/GHSA-jfh8-c2jp-5v3q
Reddit Thread zu den Exploits
https://www.reddit.com/r/blueteamsec/comments/rd38z9/log4j_0day_being_exploited/
NCSC-NL GitHub Repository zu betroffener Software, aktuellen Scans, Indicators of Compromise und Gegenmaßnahmen
https://github.com/NCSC-NL/log4shell
GovCERT.ch Artikel zu CVE-2021-44228
https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/
Tweet von Jan Schaumann zu serialisierten LDAP Payloads
https://twitter.com/jschauma/status/1470438158034780173
Apache Log4j 2.16 Download
https://logging.apache.org/log4j/2.x/download.html
Heise-Artikel zu Apache Log4j 2.16
https://www.heise.de/news/Log4j-2-16-0-verbessert-Schutz-vor-Log4Shell-Luecke-6294053.html
CERT.at Special Report mit Empfehlungen zu Log4Shell
https://cert.at/de/spezielles/2021/12/special-report-empfehlungen-zu-log4shell
LunaSec-Artikel zu CVE-2021-45046
https://www.lunasec.io/docs/blog/log4j-zero-day-update-on-cve-2021-45046/
Apache Patch Notes zu Log4j 2.17
https://logging.apache.org/log4j/2.x/security.html
Snyk-Artikel zu CVE-2021-45105
https://snyk.io/blog/log4j-2-16-vulnerability-cve-2021-45105-discovered/
Checkmarx Artikel zu CVE-2021-44832
https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/