Zum Inhalt springen
Einblicke für Analysten: Laden Sie noch heute Ihr Exemplar des Gartner® Hype Cycle™ for Security Operations, 2024 Reports herunter! | Bericht abrufen
Beratung

Rapid Response Advisory 27. September 2024: Sicherheitslücken im Common Unix Printing Service (CUPS)

Hintergrund

Gestern, am 26. September, wurde nach großer Vorfreude und einem dramatischen Trommelwirbel in den sozialen Medien eine Reihe von Sicherheitslücken im Common Unix Printing Service (CUPS) bekannt gegeben, einem weit verbreiteten Druckdienstprogramm, das in vielen Linux-Distributionen zu finden ist (laut dem ursprünglichen Bericht des Forschers speziell in dieser).

Diese Schwachstellen werden im Folgenden zusammengefasst:

CVE-ID Schweregrad Betroffener Dienst Beschreibung
CVE-2024-47176 8.3 cups-browsed <= 2.0.1 Bindet an UDP INADDR_ANY:631 und vertraut darauf, dass jedes Paket von einer beliebigen Quelle eine Get-Printer-Attributes IPP-Anfrage an eine vom Angreifer kontrollierte URL auslöst.
CVE-2024-47076 8.6 libcupsfilters <= 2.1b1 cfGetPrinterAttributes5 validiert oder bereinigt die von einem IPP-Server zurückgegebenen IPP-Attribute nicht, so dass dem Rest des CUPS-Systems von Angreifern kontrollierte Daten zur Verfügung stehen.
CVE-2024-47175 8.6 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 9.0 cups-filters <= 2.0.1 foomatic-rip ermöglicht die Ausführung beliebiger Befehle über den PPD-Parameter FoomaticRIPCommandLine.

Quelle: https://www.evilsocket.net/2024/09/26/Attacking-UNIX-systems-via-CUPS-Part-I/#Summary

Die am meisten diskutierte dieser Schwachstellen ist CVE-2024-47176, die cups-browsed betrifft. Nach einer Diskussion im Red Hat-Sicherheitsforum wurde diese Schwachstelle zunächst inoffiziell mit einem CVSS-Score von 9,9 bewertet, aber GitHub hat ihr kürzlich einen Score von 8,3 (hoch) zugewiesen.

Verstehen von CUPS und IPP

CUPS ist auf vielen Linux- und anderen Unix-Systemen zur Verwaltung von Druckaufträgen und Warteschlangen zu finden. Es wird in Verbindung mit dem Internet Printing Protocol (IPP) für die Netzwerkkommunikation zwischen Computern und Druckern verwendet. IPP wurde entwickelt, um es Geräten zu ermöglichen, Drucker zu finden und Druckaufträge über ein Netzwerk zu verwalten. Gemäß RFC8011 läuft dieses Protokoll über TCP und hat den Port 631 zugewiesen bekommen.

In Verbindung mit IPP findet der cups-browsed Dienst neue Drucker im Netzwerk über Broadcast, Unicast (dank des UDP-Listeners) und mDNS, so dass die Drucker automatisch bei den Clients auftauchen.

Bei diesem gebundenen Dienst handelt es sich nicht um IPP, sondern um ein völlig anderes Protokoll, das CUPS Browse Protocol. Es sollte beachtet werden, dass die Kommunikation über dieses Protokoll mittels Unicast einseitig ist, d. h. Sie können Daten an den Dienst senden, erhalten aber keine Daten zurück. Diese Tatsache macht das Scannen nach einem solchen Dienst fast unmöglich, da es keine Rücksendedaten gibt und er über UDP läuft. Außerdem werden ICMP-Meldungen über unerreichbare Ports (mit denen einige Scanner feststellen, ob ein entfernter UDP-Dienst zuhört) meistens am Rand oder auf dem Host gefiltert.

Die erste CVE in der Kette ist CVE-2024-47176, die besagt, dass der Dienst cups-browsed sich an INADDR_ANY (d. h. er bindet sich an alle Netzwerkschnittstellen) am UDP-Port 631 bindet. Dies ermöglicht es im Grunde jedem entfernten Benutzer, mit dem zugrunde liegenden Dienst zu kommunizieren.

Ein böswilliger Benutzer könnte ein speziell gestaltetes Paket senden, das diesen "durchsuchten" Server darüber informiert, dass sich ein IPP (TCP)-Drucker im Internet befindet. Der Prozess versucht dann, eine Verbindung zu diesem entfernten Server herzustellen (unter Verwendung von IPP über TCP). Sobald die Verbindung hergestellt ist, könnte der böswillige Server eine Reihe von Konfigurationen und PostScript-Druckerbeschreibungen (PPD) zurücksenden, die den Opferserver veranlassen können, beliebige Befehle auszuführen , nachdem ein Druckauftrag in die Warteschlange gestellt wurde.

HINWEIS: Bei dieser Sicherheitslücke muss das Opfer den bösartigen Druckserver manuell auswählen und verwenden.

Bei Servern, die CUPS nicht ausführen oder öffentlich zugänglich machen, spielt dies keine Rolle. Wenn jedoch ein Host einen betroffenen CUPS-Dienst dem öffentlichen Internet aussetzt, kann ein entfernter Bedrohungsakteur ein bösartiges UDP-Paket an Port 631 senden, ohne dass eine Authentifizierung erforderlich ist, was dann den CUPS-Dienst veranlasst, sich über TCP mit einem bösartigen Server zu verbinden.

Außerdem kann die gleiche Serverinjektion über mDNS erfolgen, wenn CUPS dafür konfiguriert wurde.

Worüber sollten Sie sich Sorgen machen?

Faktoren, die das Risiko mindern:

  • Wenn CUPS unbeabsichtigt auf einem Server installiert wurde, aber nie zum Drucken verwendet wird, ist es unwahrscheinlich, dass dies direkte Auswirkungen hat, da eine Person einen Druckauftrag an die bösartige Druckerwarteschlange senden muss. Wenn Sie jedoch der Meinung sind, dass Sie betroffen sein könnten, können Sie mit dem Befehl lpstat -a alle bekannten Drucker auf dem lokalen Rechner auflisten. Wenn einer der Einträge seltsam oder verdächtig aussieht, hat es wahrscheinlich jemand auf Ihren Server abgesehen. Versuchen Sie nicht, auf diesem verdächtigen Server zu drucken.
  • Dieser Exploit erfordert eine Benutzerinteraktion (es muss ein Druckauftrag an den bösartigen Drucker ausgelöst werden), um zu einem RCE zu führen. In Anbetracht dieser Tatsache ist es wahrscheinlicher, dass diese Schwachstelle genutzt wird, um sich seitlich innerhalb eines Netzwerks zu bewegen:
    • Der Angreifer injiziert einen bösartigen Druckserver
    • Angreifer führt $ echo nop | lpr -P $MALICIOUS_PRINTER_NAME

Faktoren, die das Risiko verstärken:

Censys Blickwinkel

Censys Daten zeigen, dass es 63.096 exponierte CUPS IPP-Dienste im öffentlichen Internet gibt. Beachten Sie, dass Sie nur dann feststellen können, ob das Browse-Protokoll ausgeführt wird, wenn Sie den eigentlichen Exploit senden und den Dienst über TCP zurückverbinden lassen.

Von diesen zeigen 7.289 Anzeichen, dass eine von diesen CVEs betroffene Version läuft (Versionen = 2.0.1). Beachten Sie, dass verschiedene Scanner die betroffenen Dienste unterschiedlich zählen. Für die Zwecke dieses Beitrags behandeln wir TCP/631 (IPP) als Stellvertreter für eine mögliche UDP/631-Belastung.

Map of Publicly Exposed CUPS services running a version <= 2.0.1.

Beachten Sie, dass nicht alle diese Dienste notwendigerweise den betroffenen cups-browsed-Daemon ausführen, und auch hier muss auf dem Zielcomputer ein Druckauftrag an den bösartigen Drucker ausgelöst werden, damit der Exploit erfolgreich ist.

Land Host-Zahl
Vereinigte Staaten 2230
Südkorea 567
Taiwan 522
Frankreich 343
Deutschland 207
Japan 204
Italien 183
Hongkong 178
Vereinigtes Königreich 174
Polen 172

Was kann getan werden?

Es ist nicht ratsam, einen CUPS-Dienst dem öffentlichen Internet auszusetzen, es sei denn, dies ist für den Betrieb unbedingt erforderlich. Es gibt noch keine Patches für diese Schwachstelle, so dass es in der Zwischenzeit empfehlenswert ist, den cups-browsed-Dienst zu deaktivieren, indem Sie die folgenden Befehle auf Ihrem Server ausführen:

systemctl stop cups-browsed
systemctl cups-browsed deaktivieren

Darüber hinaus wird empfohlen, den Datenverkehr zu 631/UDP zu blockieren - beachten Sie jedoch, dass dies das Risiko einer Ausnutzung des lokalen Netzwerks über mDNS oder die anderen oben genannten Kanäle nicht mindert.

Referenzen

Lösungen für das Management von Angriffsflächen
Mehr erfahren