Log4Shell – kritische Schwachstelle in der Java-Logging-Bibliothek Log4j

Am 24. November wurde eine kritische Schwachstelle (Zero-Day-Schwachstelle) in Log4j an Apache gemeldet. Sie wurde später (am 10. Dezember) unter dem Namen Log4Shell (CVE-2021-44228) veröffentlicht; sie kann mühelos aus der Ferne ausgenutzt werden und erlaubt es einem Angreifer, eigenen Code auszuführen (RCE). Unter anderem wurden Amazon, Apple, Tesla, Twitter, Steam usw. erfolgreich angegriffen. Aufgrund der einfachen Ausnutzbarkeit und der schwerwiegenden Folgen hat das BSI (Bundesamt für Sicherheit in der Informationstechnik) bereits am Samstag, den 11. Dezember, die höchste Warnstufe „rot“ ausgerufen.

Inhalt

  1. Entdeckung der Schwachstelle
  2. Wer ist betroffen?
  3. Ausnutzung von Log4j
  4. Empfehlungen zum Schutz Ihrer Systeme

1. Entdeckung der Schwachstelle

CVE-2021-44228, auch Log4Shell genannt, ist eine Schwachstelle zur Remote Code Execution. Wenn es Angreifern gelingt, die Sicherheitslücke auf einem Server auszunutzen, können sie beliebigen Code ausführen und möglicherweise die Kontrolle über das gesamte System übernehmen.

Die Schwachstelle CVE-2021-44228 ist besonders gefährlich, weil der Exploit so einfach ist, dass selbst unerfahrene Angreifer einen erfolgreichen Angriff unter Ausnutzung dieser Sicherheitslücke durchführen können. Es reicht aus, wenn der Angreifer die Anwendung zwingt, eine einzelne Zeile in das Protokoll zu schreiben. Danach kann der Angreifer seinen eigenen Code hochladen. Dies ist aufgrund der Lookup-Plugin-Funktion möglich.

Machbarkeitsstudien oder Proofs of Concept (PoC) für die Angriffe, die die Schwachstelle CVE-2021-44228 ausnutzen, sind bereits öffentlich verfügbar. Daher ist es nicht verwunderlich, dass Cybersicherheitsunternehmen bereits massive Netzwerk-Scans für diese Schwachstelle registriert haben und es viele gemeldete Angriffe auf Produktionssysteme gab.

Diese Schwachstelle wurde von Chen Zhaojun, einem Mitglied des Alibaba Cloud Security Teams, entdeckt.

2. Wer ist betroffen?

Alle Versionen vor 2.15.0 (6. Dezember 2021) sind betroffen. Eine breite Palette von Produkten, die diese alten Versionen von Log4j enthalten, ist ebenfalls anfällig. Eine ständig aktualisierte Liste finden Sie hier. Während Version 1 nicht für die kürzlich entdeckte Zero-Day-Schwachstelle anfällig ist, ist sie für RCE anfällig und Sie sollten sie sofort auf die neueste Version 2.16.0 aktualisieren.

Ein Angriff wird meist erst erkannt, wenn es zu spät ist – zum Beispiel, wenn eine erpresserische Lösegeldforderung eingeht. Aber davor bemerkt man es meist nicht; der Angriff läuft im Hintergrund ab. Es sei denn, Sie haben Ihre Infrastruktur so vorbereitet, dass sie Cyberangriffe durch Überwachung gezielt erkennt.

Um zu überprüfen, ob Ihre Server anfällig sind, können Sie gerne unser Skript verwenden.

3. Ausnutzung von Log4j

Die Log4j-Schwachstelle kann ausgenutzt werden, indem speziell manipulierte Log-Nachrichten an Log4j gesendet werden. Ein Angreifer verwendet das Java Naming and Directory Interface (JNDI) – eine Java-Abstraktionsschicht, die standardmäßig in der Java SE-Plattform enthalten ist und es einer Java-Anwendung ermöglicht, Daten von Verzeichnisdiensten (wie LDAP) abzurufen. JNDI verwendet HTTP-URLs, um einen bestimmten Verzeichnisdienst aufzulösen – und die URI kann nach Bedarf angepasst werden, um den richtigen Verzeichnisort aufzulösen. Bei der Verwendung von Log4j ist es für einen Angreifer durch das Senden einer Nachricht mit einer speziell manipulierten URL möglich, beliebigen Code auszuführen (z. B. durch Bereitstellung eines Base64-codierten Skripts im Pfad). Hier wird die vom Angreifer gesendete Payload von Log4j in einem Log gespeichert und aufgrund unzureichender Eingabevalidierung als Code betrachtet.

Dies ist auf ein spezielles Verhalten in Log4j zurückzuführen, das die Injektion variabler Daten in das Protokoll ermöglicht (sogenannte Lookups). Bei einem Lookup wird die Referenz abgefragt und für die Eingabe in das Protokoll ausgewertet. Wenn der Angreifer diese Funktion während eines Angriffs nutzt, verwendet er die URI-Eingabe, um Log4j anzuweisen, ein von ihm eingegebenes Objekt aufzulösen (z. B. ein verschlüsseltes Skript). Die Beschreibung der neuen Schwachstelle, CVE 2021-45046, besagt, dass der Fix zur Behebung von CVE-2021-44228 in Apache Log4j 2.15.0 „in bestimmten Nicht-Standard-Konfigurationen unvollständig war“. Dieses Problem wurde daher erst in Log4j 2.16.0 vollständig behoben.

4. Empfehlungen zum Schutz Ihrer Systeme

Dieses Bild zeigt den Angriffsablauf. Quelle: https://govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j

Es gibt mehrere Möglichkeiten, Ihre Systeme gegen die Log4Shell-Schwachstelle zu sichern. Der einfachste Weg wäre, Log4j auf Version 2.16.0 zu patchen. Dies schließt den Angriffsvektor und das System ist nicht mehr über die Zero-Day-Schwachstelle Log4Shell angreifbar. Wenn dies jedoch nicht sofort möglich ist, sollte die Eigenschaft „No Lookups (log4j2.formatMsgNoLookups)“ auf true gesetzt werden, um einen Angriff zu verhindern. Wenn Sie eine anfällige Version haben oder hatten, haben Angreifer möglicherweise eine oder mehrere Hintertüren in Ihr System implementiert. Aus diesem Grund sollten Sie sofort eine Analyse durchführen, die Ihr System auf Hintertüren überprüft und ob Angreifer bereits in Ihr System eingedrungen sind.

Lesen Sie über weitere interessante Themen in unserem Blog.