Das Internet brennt. Lichterloh. Das liegt an einer schweren Systemlücke, die extrem leicht auszunutzen ist und Millionen Systeme weltweit betrifft. Aber der Reihe nach.
Viele Computersysteme protokollieren, wie es ihnen geht und was Nutzer gerade machen. Dazu schreiben sie in eine Textdatei Datum, Uhrzeit und z.B. wieviel Platz noch auf der Festplatte frei ist. Sucht ein Benutzer etwas in einer Suchfunktion, wird auch das dort vermerkt. „User pmueller sucht nach ‚staubsauger‘“, steht dann da. Das klingt alles sehr einfach. Eine Protokollierungsfunktion muss eigentlich nur eine Zeile Text ans Ende einer Datei hängen. Fertig.
Weit gefehlt. Wäre dem so, dann würden in kürzester Zeit alle Rechner der Welt keinen Speicherplatz mehr haben, weil die Protokolldateien ratz fatz riesig groß werden. Es muss also darauf geachtet werden, dass eine maximale Dateigröße nicht überschritten wird. Also müssen die ältesten Eintrage erst gelöscht werden, bevor neue dazu kommen. Außerdem wäre es sinnvoll, dass im Normalfall nur die nötigsten Infos dort landen, während man bei einer Fehlersuche mehr Einträge erhält. Auch das – loglevel genannt – gehört zu einer Protokollfunktion. Sie merken, das ist doch aufwändiger, als man auf den ersten Blick meint.
Damit jetzt nicht jeder, der in seinem Computerprogramm protokollieren will, so eine umfangreiche Funktion von Grund auf neu programmieren muss, gibt es fertige Bibliotheken. Das sind von meist ehrenamtlichen Entwicklern mit allen Schikanen ausgestatte Funktionen, die man einfach so nutzen darf. Eine solche Bibliothek, die von Millionen Programmierern zum Protokollieren genutzt wird, heißt log4j. Und die hat einen Fehler. Und der ist deshalb dummerweise jetzt in allen damit erstellten Programmen – weltweit.
Um einen Server zu übernehmen, muss ein Angreifer es nur schaffen, dass etwas in die Protokolldatei geschrieben wird. Zum Beispiel das, was er in das Suchfeld auf einer Webseite einträgt. Wenn der Benutzer pmueller nämlich nicht nach „staubsauger“ sondern nach „boeserserver.de/virus.exe“ (vereinfacht!) sucht, dann schreibt die Protokoll-Bibliothek nicht nur „user pmueller sucht nach ‚boeserserver.de/virus.exe‘“ in die Logdatei, sondern lädt virus.exe auch noch von boserserver.de herunter und startet es.
Falls sie sich jetzt fragen, wie man so einen Fehler machen konnte … tja, eigentlich ist das gar kein Fehler. Es ist eine Funktion, die exakt so sein sollte, weil man das in manchen Fällen beim Protokollieren braucht. Es hat nur niemand daran gedacht, dass diese Funktion auch ein Hacker nutzen kann. Die bisher größte, schwerste Sicherheitslücke aller Zeiten ist also kein Systemfehler, sie ist ein Feature. Wer hätte das gedacht.