„Log4Shell“/“Log4Bash“: Schwere Sicherheitslücke in log4j einfach für Nicht-ITler erklärt

Log4Shell ist mittlerweile in aller Munde. Sehr zur Verwunderung jener, die sich nicht so sehr mit IT und Technik auskennen. Euch möchte ich das heute so einfach wie möglich erklären.

Die technische Seite hat Daniel bereits in einem Beitrag erläutert. Wer sich dafür interessiert, kann dort weiter lesen. Mein Name ist Luis, ich bin auf U-Labs unter dem Pseudonym „Hase“ aktiv und möchte euch zusammen mit Dani die Log4j Sicherheitslücke so erklären, dass ihr sie auch dann versteht, wenn ihr euch nicht so sehr mit Technik und Programmieren auskennt.

Was ist Log4j? Einfache Erklärung für Nicht-Entwickler

Log4j ist eine Bibliothek für Java, eine gängige Programmiersprache. Eine Bibliothek enthält Teilfunktionen eines Programms und kann in mehreren Programmen genutzt werden. Es ist daher üblich, bestimmte Funktionen in eine Bibliothek zu packen und anderen zur Verfügung zu stellen. Bei quelloffenen Programmen ist das sogar üblich: Hier stellen Programmierer den gesamten Code zur freien Verfügung, damit jeder ihn nutzen kann und sich so Arbeit spart.

Ein Beispiel: Chart.js ist eine Bibliothek für verschiedene Diagramme. Statt mich zu beschäftigen wie ich ein Balkendiagramm oder ein Liniendiagramm zeichne, kann ich diese Bibliothek nutzen. Ihr übergebe ich meine Daten und wie diese als Diagramm dargestellt werden, darum kümmert sich die Bibliothek. Ähnlich ist es mit Log4j: Diese Bibliothek ist für Protokolle gedacht.

Vor allem auf Servern schreiben Programme verschiedene Informationen in sogenannte Logdateien. Oft sind es Fehler oder Hinweise auf Fehler. So ist der Administrator informiert und bekommt im besten Falle möglichst viele Informationen, um das Problem lösen zu können. Auch hier ein Beispiel: Ihr habt eine Registrierungsseite. Wenn die Registrierung fehlschlägt, könnte Log4j Informationen in das Protokoll schreiben, wie etwa der verwendete Internetbrowser, welche Daten ihr angegeben habt und weitere Details.

Was ist die Sicherheitslücke Log4Shell?

Ein Fehler ermöglicht es, dass man über das Internet bösartigen Programmcode ausführen kann. Das funktioniert so: Daten die von Außen kommen, werden mithilfe von Log4j in eine Protokolldatei geschrieben. Beispielsweise eine Meldung, dass sich Nutzer XY angemeldet oder Registriert hat. Oder Informationen über einen Fehler. Oft sind solche Informationen von außen hilfreich, um die Meldung besser zu verstehen oder überhaupt nachvollziehen zu können. Solche Daten können aber leicht manipuliert werden, weswegen sie normalerweise immer auf böse Befehle geprüft werden müssen.

Und genau in dieser Prüfung befindet sich ein Fehler: Man kann vereinfacht gesagt mithilfe eines Dollar-Zeichens verschiedene Programmcodes ausführen, wenn sie mithilfe von Log4j in ein Protokoll geschrieben werden. Da heutige Anwendungen vieles protokollieren, ist das leicht.

Sicherheitslücken erhalten heutzutage Namen, ähnlich wie Unwetter und andere Katastrophen. Diese hier wurde Lock4Shell genannt. Eine Shell ist vereinfacht gesagt eine Konsole, über die man mit Textbefehlen einen kompletten Computer oder Server steuern kann. Da ein Angreifer über diese Lücke beliebig Programmcode einschleusen kann, ist es auch möglich, eine Shell zu starten. Damit hat er nicht nur Zugriff auf das Programm, sondern auch auf den Server oder Computer, auf dem es läuft. Zumindest, wenn dieser nicht zusätzlich geschützt wurde, was leider oft der Fall ist.

Sicherheitslücken gibt es doch immer wieder, warum ist Log4j so gefährlich?

Hier kommen mehrere ungünstige Aspekte zusammen:

  1. Da viele Daten die von außen über das Internet in das Programm kommen mit Log4j aufgezeichnet werden, ist es für Angreifer sehr einfach, diese auszunutzen.
  2. Die Lücke ist schwerwiegend. Man kann damit beliebigen Java-Programmcode in fremde Programme einfügen. Das ist so ziemlich die schlimmste Art von Sicherheitslücke, die es geben kann.
  3. Java und Log4j gibt es seit Jahren, sie erfreuen sich großer Beliebtheit. Daher ist diese Kombination sehr verbreitet.
  4. Viele Entwickler und vor allem Unternehmen aktualisieren Ihre Programme nur zögerlich oder gar nicht.

Man kann sich das in etwa so vorstellen: Zwei Forscher entwickeln in Ihrer Freizeit einen neuen, besseren Zement und veröffentlichen alle Informationen dazu, sodass jeder diesen Zement herstellen kann. Zahlreiche Unternehmen finden gefallen daran und bauen damit verschiedene Gebäude – ohne zu prüfen, ob dieser Zement von der Statik her tauglich ist.

Einige Jahre später sind zahlreiche große Gebäude entstanden und in regem Betrieb, überall wurde dieser Zement verwendet. Nun ist dieser Zement aber nicht ausreichend stabil, die Gebäude beginnen einzustürzen. In dieser Phase befinden wir uns mit der Log4Shell Lücke: Wir wissen nun, dass der Zement instabil ist. Erste Gebäude sind bereits eingestürzt. Deswegen wird nun geprüft, wo überall dieser Zement verwendet wird, damit man diese Gebäude absichern kann.

Was kann durch einen Angriff geschehen?

Bisher scheinen die meisten Angriffe sich auf sogenannte Cryptominer zu beschränken: Sie nutzen die Leistung des Systems, um Mathematische Berechnungen durchzuführen. Dadurch bekommen sie Cryptowährungen, die man gegen Fiatgeld eintauschen kann.

Vergleichsweise harmlos, denn ein erfolgreicher Angreifer kann mindestens die volle Kontrolle über die jeweilige Seite oder den Internetdienst bekommen. Das heißt: Er kann z.B. auf Daten zugreifen, diese Manipulieren oder das System manipulieren. Gerade bei großen Diensten kann das lukrativ sein, wenn diese sensible Informationen oder Zahlungsdaten enthalten.

Bin ich als Privatperson betroffen? Was kann bzw. sollte ich tun?

Hauptsächlich sind Unternehmen betroffen sowie Privatpersonen, die Java-Programme betreiben. Wer beispielsweise einen Minecraft-Server hat, der ist über den Chat verwundbar: Jeder der Zugriff auf den Chat hat, kann dort mit bestimmten Befehlen vollen Zugriff erhalten. Wer solche Dienste nicht selbst betreibt, kann derzeit wenig tun – er ist davon abhängig, dass Unternehmen die er verwendet die Lücke beheben. Netflix hat dies beispielsweise schon sehr zeitig getan.

Aber auch wer keine IT-Dienste betreibt, kann betroffen sein: Beispielsweise über Geräte. In einigen smarten Geräten des „Internets der Dinge“ wird Java ebenfalls genutzt. Diese Geräte können infiziert und für Angriffe missbraucht werden. Hier gilt: Nach Aktualisierungen Ausschau halten und diese so schnell wie möglich einspielen. Bei Geräten die Älter sind oder keine Updates mehr erhalten, sollte man den Hersteller kontaktieren. Im Zweifel diese Geräte vom Internet trennen, bis Gewissheit herrscht, dass diese nicht verwundbar sind.

Leider ist gerade in diesem Bereich die Lage schlecht: In einer Studie mit rund 340 untersuchten IOT-Firmen haben fast 80% unzureichend oder sogar gar nicht auf gemeldete Sicherheitsmängel reagiert. Bei so einer Sicherheitslage kann man als Kunde im schlechtesten Falle tatsächlich nur die Geräte vom Netz nehmen und beim Hersteller Druck machen.

Weniger dramatisch sieht es bei klassischen Geräten wie Computern, Laptops oder Smartphones aus. Selbst wenn diese betroffen sind, kommt ein Angreifer in der Regel nicht einfach so übers Internet an die Geräte heran.

Fazit

Ich hoffe, euch damit die aktuellen Probleme rund um die Log4j Sicherheitslücke verständlich erklärt zu haben, auch wenn ihr nicht aus dem IT-Bereich kommt. Falls mir das gelungen ist, gebt gerne einen Daumen nach oben. Hat euch etwas gefehlt oder ihr habt anderes Feedback? Dann schreibt es zu uns ins Forum auf u-labs.de oder in die Kommentare!

Leave a Reply