[English]Im Drucksystems CUPS, welches unter Linux und Unix zum Einsatz kommt, gibt es gleich mehrere kritische Schwachstellen. Diese lassen sich unter bestimmten Konstellationen für Remote Code Execution-Angriffe (RCE) verwenden.
Was ist CUPS?
Das Kürzel CUPS steht für Common Unix Printing System. Es handelt sich um ein Open-Source-Drucksystem, das als Daemon fungiert, der das Drucken unter den verschiedenen unixoiden Betriebssystemen sowie unter OS/2/EComStation ermöglicht.
Entwickelt wurde es von Michael Sweedt, der die erste Version 1999 veröffentlichte. Im Jahr 2007 wurde Sweedt von Apple eingestellt und der Konzern erwarb auch die Rechte an CUPS. Die kommerzielle Variante von CUPS wurde dann eingestellt. Daher setzt auch Apple in macOS, iOS und iPadOS auf CUPS auf. Seit 2017 wird CUPS unter der Apache-Lizenz verbreitet und lässt sich auch in Windows nutzen.
Schwachstellen in CPUS
Der in Rom lebende und unter dem Alias evilsocket publizierender Entwickler Simone Margaritelli (arbeitet aktuell bei DataFlow Forensic), der laut eigener Aussage an CUPS mit entwickelt, hat gleich mehrere Schwachstellen in CUPS aufgedeckt.
Zum 26. September 2024 hat er Teil I seiner Erkenntnisse auf evilsoft.net im Beitrag Attacking UNIX Systems via CUPS, Part I veröffentlicht. Über eine Verkettung der Schwachstellen CVE-2024-47076 (libcupsfilters), CVE-2024-47175 (libppd), CVE-2024-47176 (cups-browsed) und CVE-2024-47177 (cups-filters) können Angreifer unter bestimmten Bedingungen beliebigen Code remote auf verwundbaren Rechnern ausführen.
So durchsucht der cups-browsed-Daemon das Netzwerk nach freigegebenen Druckern. Dazu lauscht der Daemon am UDP-Port 631 nach Antworten und lässt dabei standardmäßig Remote-Verbindungen von jedem Gerät zu, um neue Druckerverbindungen zu erstellen.
Margaritelli stieß bei der Analyse auf eine Schwachstelle, so dass er einen PostScript Printer Description (PPD)-Drucker erstellen konnte, der manuell an einen offenen, von cups durchsuchten Dienst, der auf UDP-Port 631 läuft, weitergereicht wird.
Ein Rechner macht diesen Drucker automatisch remote zum Drucken verfügbar. Gelingt es einem Angreifer, einen bösartigen (PPD)-Drucker zu erstellen, kann er remote bösartige Befehle auf dem lokalen Rechner ausführen.
Dazu braucht ein nicht authentifizierter remote Angreifer nur die IPP-URLs bestehender Drucker (oder neuer Drucker) unbemerkt durch eine bösartige ersetzen. Das lässt sich zur Ausführung beliebiger Befehle auf dem lokalen Rechner verwenden, indem ein Druckauftrag von diesem Computer gestartet wird.
Im WLAN kann ein Remote-Angreifer, ggf. per Internet, ein UDP-Paket an Port 631 senden. Es erfolgt keine Authentifizierung. Ein lokaler Angreifer kann im lokalen Netzwerk die zeroconf-, mDNS-, und DNS-SD-Ankündigungen fälschen, um den gleichen Code-Pfad zu erreichen, der zur RCE führt, schreibt der Entdecker. Simone Margaritelli hat in seinem Artikel folgende Schwachstellen benannt:
- CVE-2024-47176 | cups-browsed <= 2.0.1 bindet sich an UDP INADDR_ANY:631 und vertraut darauf, dass ein beliebiges Paket von einer beliebigen Quelle eine Get-Printer-Attributes IPP-Anfrage an eine vom Angreifer kontrollierte URL auslöst.
- CVE-2024-47076 | libcupsfilters <= 2.1b1 cfGetPrinterAttributes5 validiert oder bereinigt die von einem IPP-Server zurückgegebenen IPP-Attribute nicht, wodurch vom Angreifer kontrollierte Daten für den Rest des CUPS-Systems bereitgestellt werden.
- CVE-2024-47175 | libppd <= 2.1b1 ppdCreatePPDFromIPP2 validiert oder bereinigt die IPP-Attribute nicht, wenn sie in eine temporäre PPD-Datei geschrieben werden, was die Einspeisung von durch Angreifer kontrollierten Daten in die resultierende PPD ermöglicht.
- CVE-2024-47177 | cups-filters <= 2.0.1 foomatic-rip ermöglicht beliebige Befehlsausführung über den PPD-Parameter FoomaticRIPCommandLine.
Es soll noch weitere Bugs in CUPS geben. CUPS und insbesondere der cups-browsed Daemon sind für die meisten UNIX-Systeme (GNU/Linux-Distributionen, diverse BSD-Systeme, ChromeOS, Solaris etc.) verfügbar.
Wie kritisch ist es?
Die Schwachstellen wurden mit einem CVS 3.1-Score von 9.8 versehen, was eigentlich sehr kritisch ist. Aber die Bewertung der Ausnutzbarkeit differiert sehr stark. Simone Margaritelli schreibt, dass der cups-browsed Daemon in einigen Fällen standardmäßig aktiviert sei.
Bleeping Computer gibt an, dass dieser Daemon standardmäßig nicht aktiviert sei. Die Kollegen zitieren diesen RedHat-Artikel mit einer Stellungnahme zu den obigen Schwachstellen.
Alle Versionen von Red Hat Enterprise Linux (RHEL) sind von CVE-2024-47076, CVE-2024-47175, CVE-2024-47176 und CVE-2024-47177 betroffen, sind aber in ihren Standardkonfigurationen nicht anfällig.
Red Hat stuft diese Schwachstellen daher vom Schweregrad “Kritisch” auf “Wichtig” herunter. Administratoren können die Schwachstelle relativ leicht entfernen, indem sie den cups-browsed Daemon mit folgenden Befehlen:
$ sudo systemctl stop cups-browsed $ sudo systemctl disable cups-browsed
stoppen und dann am Starten hindern. Red Hat und die Linux-Entwickler arbeiten derzeit an Patches, um diese Probleme zu beheben. Eine Diskussion findet sich auch auf reddit.com.
Der Entdecker der Schwachstellen schreibt: Falls das System nicht aktualisiert werden kann und Sie aus irgendeinem Grund auf diesen Dienst angewiesen sind, blockieren Sie den gesamten Verkehr zum UDP-Port 631 und möglicherweise den gesamten DNS-SD-Verkehr (viel Glück, wenn Sie zeroconf verwenden).
Viele CUPS-Instanzen im Internet erreichbar
Nachfolgender Tweet greift Zahlen von Shodan auf. Über diese Suchmaschine werden über 75.000 ungeschützte CUPS-Daemons im Internet gefunden, die potentiell über die Remote Code Execution-Schwachstelle (RCE) angreifbar sind.
Hetzner ist mit ca. 2.105 Systemen dabei, in Deutschland werden 4.818 solcher Systeme gezählt.
Sicherheitsforscher Marcus Hutchins schreibt auf LinkedIn, dass er seine Scantechnik zur Identifizierung angreifbarer CUPS-Server überarbeitet habe. Anstatt sich auf Shodan-Daten zu verlassen, hat er einen eigenen internetweiten Scan mit einem verteilten Netzwerk von Servern durchgeführt.
Der Scanner sendet eine Sondierungsnachricht an den UDP-Port 631. Bei einem erfolgreichem Empfang durch ein System, auf dem der cups-browsed-Daemon läuft, führt dies dazu, dass das System eine ausgehende Verbindung zu den Webserver von Hutchins initiiert.
Nur eindeutige IP-Adressen, die seinen Webserver mit gültigen CUPS-Anfragen erreichten, wurden als potentiell “angreifbar” gezählt. Dadurch konnte er drastisch mehr exponierte Instanzen von CUPS entdecken. Er schreibt von insgesamt 107.287 Systemen (wobei in Deutschland 12.212 Systeme detektiert wurden).