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 auf true 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 Umgebungsvariable LOG4J_FORMAT_MSG_NO_LOOKUPS auf true 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/