Simone Margaritelli, Autor der OpenSnitch-Firewall und des Netzwerk-Analysetools bettercap, hat vorzeitig Informationen über zuvor angekündigte kritische Sicherheitslücken veröffentlicht, die es ermöglichen, GNU/Linux-Distributionen, Solaris, FreeBSD und einige andere BSD-Systeme aus der Ferne anzugreifen. Die Veröffentlichung war ursprünglich für den 6. Oktober geplant, musste jedoch aufgrund einer Informationsleckage vorzeitig erfolgen, bevor die meisten Distributionen in der Lage waren, ein Update der Pakete vorzubereiten. Die Sicherheitslücken betreffen den Druckserver CUPS und ermöglichen es, ohne Authentifizierung Code im System auszuführen.
Der Forscher, der das Problem identifiziert hat, hat einen funktionalen Prototyp eines Exploits entwickelt, der eine Kombination mehrerer Schwachstellen nutzt und es ermöglicht, remote Code mit den Rechten des Druckauftragsverarbeitungsprozesses von CUPS (normalerweise der Benutzer „lp“) auszuführen. Der Exploit ermöglicht es, die Druckereinstellungen des Benutzers unbemerkt zu ersetzen oder einen neuen Drucker hinzuzufügen, der mit einem laufenden IPP-Server des Angreifers verbunden ist, der eine speziell gestaltete PPD-Beschreibung des Druckers bereitstellt. Die Verarbeitung dieser PPD beim Starten der Druckaufträge führt zur Ausführung des Codes des Angreifers (es ist erforderlich, dass das Opfer einen Druckauftrag an den gefälschten oder ersetzten Drucker initiiert).
Betroffen sind Systeme mit dem Server durch CUPS-Druck und einem aktiven Prozess cups-browsed, der Netzwerkverbindungen am Port 631 (UDP) akzeptiert. Der Angriff kann auch aus einem lokalen Netzwerk heraus durchgeführt werden, in dem der Zugang zu Server Drucker verwenden die Protokolle zeroconf, mDNS oder DNS-SD. Nur Konfigurationen von cups-browsed sind anfällig, in denen im Datei /etc/cups/cups-browsed.conf im Parameter BrowseRemoteProtocols der Wert „cups“ angegeben ist. In Distributionen mit systemd kann die Verwendung des Dienstes cups-browsed mit dem Befehl „sudo systemctl status cups-browsed“ überprüft werden.
Die Verwundbarkeit tritt in allen Drucksystemen auf, die auf CUPS basieren und in denen verwundbare Versionen der Pakete cups-filters, libcupsfilters, libppd und cups-browsed verwendet werden. Patches (1, 2, 3) sind bisher nur verfügbar, die aktuellen Versionen cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 und cups-browsed 2.0.1 sind anfällig. In den Distributionen bleibt das Problem ungelöst, Updates können auf folgenden Seiten verfolgt werden: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Als vorübergehende Schutzmaßnahme kann der Zugang zum UDP-Port 631 für externe Netzwerke gesperrt, der Dienst cups-browsed deaktiviert oder die Einstellung BrowseRemoteProtocols auf „none“ gesetzt werden, bis das Update installiert ist.
Identifizierte Schwachstellen:
- CVE-2024-47176 — eine Schwachstelle im cups-browsed-Prozess, der einen Netzwerk-Socket erstellt, der Verbindungen am Port 631 annimmt und an alle vorhandenen Netzwerk-Interfaces im System angebunden ist. Er akzeptiert IPP-Anfragen „Get-Printer-Attributes“ von beliebigen externen Systemen. Durch Manipulation dieses Dienstes kann ein vom Angreifer kontrollierter Drucker im System hinzugefügt und über die Übertragung der PPD-Konfiguration Schwachstellen in anderen CUPS-Komponenten ausgenutzt werden.
- CVE-2024-47177 — eine Schwachstelle im foomatic-rip-Handler des cups-filters-Pakets, die es ermöglicht, Code auszuführen, indem der Parameter FoomaticRIPCommandLine in der PPD-Datei über die oben beschriebene Schwachstelle in cups-browsed übergeben wird. Die im Parameter FoomaticRIPCommandLine angegebenen Shell-Befehle werden ohne Berücksichtigung ausgeführt, dass der Parameter von Dritten gesetzt werden kann. Zum Beispiel kann für die Schreiboperation in die Datei /tmp/VULNERABLE der Befehl „FoomaticRIPCommandLine: „echo 1 > /tmp/VULNERABLE““ angegeben werden.
- CVE-2024-47175 — eine Schwachstelle in libppd, die durch das Fehlen einer Validierung des Wertes ppdCreatePPDFromIPP2 beim Schreiben von IPP-Attributen in eine temporäre PPD-Datei verursacht wird. Dieses Problem ermöglicht die Injektion beliebiger Daten in die resultierende PPD-Datei durch das Anhängen von Attributen mithilfe des Zeilenumbruchzeichens. Zum Beispiel kann die Überprüfung umgangen werden, indem neben den erlaubten Attributen das Attribut FoomaticRIPCommandLine zur Ausnutzung der oben genannten Schwachstelle in cups-filters eingefügt wird.
- CVE-2024-47076 — eine Schwachstelle in der Bibliothek libcupsfilters aus dem Paket cups-filters, die mit dem Fehlen einer Überprüfung der von einem externen IPP-Server zurückgegebenen Werte cfGetPrinterAttributes5 verbunden ist, was es einem Angreifer ermöglicht, die Verarbeitung beliebiger IPP-Attribute in anderen CUPS-Untermodulen zu initiieren, beispielsweise bei der Generierung von PPD-Dateien.
Das Angriffszenario auf CUPS umfasst die folgenden Schritte:
- Ein Angreifer setzt seinen eigenen IPP-Server ein.
- Der Angreifer sendet ein UDP-Paket an das Opfer mit einem Verweis auf den Drucker, der an den vom Angreifer betriebenen IPP-Server gebunden ist.
- Nach dem Empfang dieses Pakets verbindet sich das System des Opfers mit dem IPP-Server des Angreifers und fordert die Druckerattribute an.
- Im Antwort auf die Anfrage des Opfers gibt der IPP-Server des Angreifers eine PPD-Datei mit Attributen zurück, unter denen das Attribut FoomaticRIPCommandLine angegeben ist. Dieses Attribut wird an eines der zulässigen Attribute angehängt, indem das Zeichen "\n" in einer Zeile verwendet wird (z. B. "cupsPrivacyURI: "https://www.google.com/\n*FoomaticRIPCommandLine: "), was es ermöglicht, die Prüfung zu umgehen und dazu führt, dass FoomaticRIPCommandLine als separates Attribut beim Speichern der erhaltenen Daten in einer temporären Datei aufgezeichnet wird.
- Durch die Verarbeitung der übermittelten Attribute wird in der System des Opfers eine PPD-Datei erstellt: … *cupsSNMPSupplies: False *cupsLanguages: "en" *cupsPrivacyURI: "https://www.google.com/" *FoomaticRIPCommandLine: "echo 1 > /tmp/I_AM_VULNERABLE" *cupsFilter2: "application/pdf application/vnd.cups-postscript 0 foomatic-rip" *cupsSingleFile: True *cupsFilter2: "application/vnd.cups-pdf application/pdf 0 -" …
- Beim Drucken auf den durch den Angreifer bereitgestellten Drucker wird im System des Opfers der Befehl "echo 1 > /tmp/I_AM_VULNERABLE" ausgeführt.
Der Forscher, der die Schwachstellen aufdeckte, merkt an, dass die Suche nach der Schwachstelle ein paar Tage in Anspruch nahm, aber es folgte eine langwierige 22-tägige Korrespondenz mit den Entwicklern des OpenPrinting-Projekts, um sie von der Bedeutung des Problems und dem Bedarf an Patches zu überzeugen. Die Diskussion war von Streitigkeiten darüber geprägt, ob die genannten Probleme überhaupt behoben werden sollten, und die Situation konnte nur durch das öffentliche Aufsehen über die Entdeckung des kritischen Problems umgedreht werden. Interessant ist auch die Informationsleakage, bei der der an CERT übermittelte vertrauliche Bericht und der Exploit auf dem Forum breachforums.st im offenen Zugriff veröffentlicht wurden, trotz des verhängten Embargos auf die Offenlegung von Informationen.
Quelle: opennet.ru
