Der Himmel stürzt ein! (Wieder)
Das hatten wir doch schon einmal, oder? Jede zweite Woche sorgt eine neue Sicherheitslücke mit einem himmelhohen CVSS-Score für Aufregung. Diesmal handelt es sich um eine CVSS-Schwachstelle mit dem Wert 9.9, die als Geschenk für Hacker angepriesen wurde - ein Remote-Exploit, der angeblich alle Linux-Systeme schutzlos machen würde. Die Ankündigung der Sicherheitslücke erfolgte mit dem üblichen Drama im Vorfeld der Veröffentlichung (das Datum der Ankündigung wurde im Voraus bekannt gegeben) und trieb die Spekulationen in die Höhe. Doch als der Tag der Veröffentlichung gekommen war, stellte sich heraus, dass... nun ja, es war nicht die Katastrophe, die man befürchtet hatte.
Was hat es also mit dem CUPS-Daemon und der Kette von Sicherheitslücken auf sich, und warum bedeutet eine 9,9 nicht immer, dass man verloren ist?
Die Verwundbarkeit: Eine Kette des Unglücks
Zunächst einmal handelt es sich nicht nur um eine einzelne Sicherheitslücke. Es handelt sich um eine Kette von Problemen (CVE-2024-47076, CVE-2024-47175, CVE-2024-47176, CVE-2024-47177), die sich alle um den CUPS-Druckdaemon drehen. CUPS (Common UNIX Printing System) ist der ehrwürdige Dienst, der seit Jahrzehnten für das Drucken unter Linux zuständig ist und dafür sorgt, dass Ihr System mühelos Netzwerkdrucker erkennen und mit ihnen interagieren kann. Wenn Sie jemals erstaunt darüber waren, wie eine neue Linux-Installation "auf magische Weise" Drucker in der Nähe anzeigt, dann ist das CUPS zu verdanken.
Drucken war schon immer eine mühsame Angelegenheit, aber dank CUPS hat Linux das Kopfzerbrechen etwas verringert. Aber dieser Komfort hat seinen Preis. CUPS funktioniert unter anderem deshalb so gut, weil es Geräten vertraut, die sich im Netzwerk als Drucker zu erkennen geben - ohne sie genauer zu untersuchen. In den frühen 2000er Jahren mag das noch in Ordnung gewesen sein, aber aus der Perspektive des Jahres 2024 ist es ein offensichtliches Sicherheitsrisiko. Wenn CUPS alle Geräte ungeprüft akzeptiert, was passiert dann, wenn jemand einen Drucker fälscht?
Sie haben es erraten: CUPS akzeptiert es mit Freuden. Egal, ob sich der gefälschte Drucker im selben Netzwerk oder am anderen Ende der Welt befindet, solange ein manipuliertes UDP-Paket den offenen Anschluss des CUPS-Daemons (UDP 631) erreicht, wird er als gültiger Drucker angezeigt. Und hier beginnt der Spaß.
Das ist der Kern des Problems: Über diesen gefälschten Drucker kann ein Angreifer Code als Root auf einem anfälligen System ausführen, indem er die Art und Weise ausnutzt, wie CUPS mit Geräten interagiert. Der vom Angreifer kontrollierte "Drucker" kann sorgfältig gestaltete Daten senden, um das System dazu zu bringen, bösartigen Code mit erweiterten Rechten auszuführen, da CUPS mit Root-Zugriff läuft.
Der Himmel stürzt ein! (Oder doch nicht?)
Ja, die Schwachstelle ist aus der Ferne ausnutzbar. Aber nein, es ist nicht das Weltuntergangsszenario, für das viele es halten. Der Grund? Auf den meisten Linux-Serversystemen läuft standardmäßig nicht einmal CUPS. Es ist zwar ein fester Bestandteil von Desktop-Linux-Umgebungen, aber diese Systeme sind in der Regel nicht direkt mit dem Internet verbunden. Ich will damit nicht sagen, dass es nicht einige CUPS-Daemons gibt, die nur darauf warten, ausgenutzt zu werden. Ein schneller Scan des Internets am Tag der Veröffentlichung der Schwachstelle zeigte Zehntausende von ungeschützten CUPS-Instanzen. Aber in den meisten Umgebungen stellt dies keine unmittelbare oder realistische Bedrohung dar.
Es gibt noch einen weiteren wichtigen Vorbehalt: Die Exploit-Kette wird nicht allein dadurch ausgelöst, dass ein gefälschter Drucker auftaucht. Jemand muss tatsächlich versuchen, etwas auf dem Drucker auszudrucken, damit der Angriff erfolgreich ist. Ohne diese Interaktion ist es nur ein zufälliger "Drucker", der im Netzwerk sitzt. Aber, wie Terry Pratchett weise schrieb: "Wenn man irgendwo in einer Höhle einen großen Schalter mit einem Schild aufstellt, auf dem steht: 'End-of-the-World Switch. BITTE NICHT BERÜHREN', hätte die Farbe nicht einmal Zeit zum Trocknen."
Warum die Note 9,9?
Warum also die erschreckende Note 9,9? Das liegt an einer Kombination von Faktoren. Wenn Sicherheitsexperten die Worte "Remote-Code-Ausführung" hören, neigen sie dazu, das Schlimmste anzunehmen und den Wert aus Vorsicht in die Höhe zu treiben. Außerdem ist der CVSS-Bewertungsprozess manchmal eine Art Blackbox, bei der die Bewertungen je nach Distribution oder Hersteller variieren. Einige Distributionen bewerteten diese Schwachstelle beispielsweise mit 9,1, andere mit 9,9, wieder andere hielten eine andere (zufällige) Zahl für gut. Die Diskrepanz liegt nicht in der Schwere der tatsächlichen Schwachstellen (sie sind überall gleich), sondern in den subjektiven Einschätzungen, wie gefährdet ein typisches System sein könnte.
Und seien wir ehrlich: Die CVE-Bewertung ist nicht immer so wissenschaftlich, wie es scheint. Manchmal wird sie davon beeinflusst, wie viel Lärm eine Schwachstelle voraussichtlich verursachen wird, oder sogar von organisatorischen Interessen. Die Tatsache, dass wir als Branche unser Risikomanagement so sehr auf diese Zahlen stützen, ist ein systemischer Fehler.
Sollten Sie besorgt sein?
In den meisten Fällen nicht. Wenn Sie einen Server betreiben, haben Sie wahrscheinlich kein CUPS laufen. Wenn Sie ein Desktop-System verwenden, sollten Sie CUPS gar nicht erst dem Internet aussetzen. In jedem Fall wird das Blockieren des UDP-Ports 631 das Problem im Keim ersticken. Alternativ können Sie CUPS auch einfach deaktivieren, wenn Ihre Systeme keine Druckfunktionen benötigen. Und natürlich sollten Sie Patches einspielen, sobald sie verfügbar sind.
Es ist erwähnenswert, dass es sich hierbei weniger um einen Fehler als um eine "Funktion" handelt, die in einer unschuldigeren Zeit entwickelt wurde. Da Sicherheitsforscher ältere Systeme wie CUPS weiter untersuchen, können Sie davon ausgehen, dass noch mehr merkwürdige Fehler wie dieser auftauchen werden.