Vérifier si votre serveur Linux est vulnérable à l’attaque CUPS

En matière de sécurité, l’actualité est globalement tout le temps chargé. Il se passera toujours quelque chose. Sachant qu’on parle ici des seules failles de sécurités qui sont publiques. Si vous pensiez être tranquille, ce n’est pas possible. C’est impossible de l’être à partir du moment où une machine est accessible de l’extérieur pour fournir un service. Il se passera toujours quelque chose et ce peu importe le système d’exploitation que vous utilisez. Ce qui est rassurant, c’est que les failles semblent de plus en plus compliquées à mettre en œuvre. Du moins chez les acteurs historiques de l’informatique global que ce soit du Windows, macOS ou encore mon préféré, GNU/Linux. Cependant le nombre de machines en ligne augmentant chaque jour avec au passage la fragmentation des versions qui va avec, car ce n’est pas mis à jour, la surface d’attaque est elle aussi grandissante avec parfois de vieilles failles de sécurité qui ressurgissent.

Dans cet article, on va voir un nouveau beau morceau qui concerne cette fois GNU/Linux. L’alerte a été donnée par un chercheur, merci à lui et maintenant, il faut réagir en tant qu’administrateur système. En effet, une grosse vulnérabilité vient d’être rendue publique et cette fois cela concerne le périmètre de CUPS avec les vulnérabilités : CVE-2024-47076, CVE-2024-47175, CVE-2024-47176 et CVE-2024-47177.

C’est quoi la vulnérabilité CUPS ?

CUPS, pour Common UNIX Printing System, est le système d’impression le plus répandu sur les systèmes Linux. Il facilite la gestion des tâches d’impression en permettant aux ordinateurs de détecter et d’utiliser des imprimantes locales ou réseau. CUPS est également adopté par de nombreux systèmes GNU/Linux, cela comprend bien évidemment les distributions les plus connues.

La vulnérabilité la plus préoccupante concerne le démon cups-browsed. Ce service recherche automatiquement les imprimantes partagées sur le réseau local et les rend disponibles pour l’utilisateur. Si ce démon est activé (ce qui n’est généralement pas le cas par défaut), il écoute sur le port UDP 631 et accepte les connexions entrantes de n’importe quel appareil du réseau.

Un attaquant pourrait exploiter cette vulnérabilité en exposant une imprimante malveillante sur le réseau, équipée d’un fichier PPD (PostScript Printer Description) spécialement conçu. Lorsque cups-browsed détecte cette imprimante, il l’ajoute automatiquement au système. Le fichier PPD malveillant contient du code qui sera exécuté lorsque l’utilisateur enverra une tâche d’impression, permettant ainsi à l’attaquant d’exécuter du code arbitraire sur la machine victime.

Bien que la vulnérabilité soit grave en théorie, sa mise en œuvre pratique est limitée par plusieurs facteurs. Premièrement, le démon cups-browsed doit être actif sur la machine cible pour que l’attaque soit possible, ce qui n’est généralement pas le cas sur la plupart des installations par défaut. De plus, l’attaquant doit être en mesure d’envoyer des paquets UDP au port 631 de la machine victime. Ces obstacles techniques rendent l’exploitation de la vulnérabilité moins probable dans un contexte réel, même si le risque ne doit pas être négligé.

Vérifier si CUPS est actif sur votre machine

Pour commencer, je vais évoquer le cas qui m’a amené à faire cet article. C’est un ami qui m’a contacté, car il était paniqué, il a reçu un mail de son prestataire qui n’était pas très rassurant :

New complaint received on your service ddx_network – New case reference 123456
Dear customer,

We have received a complaint with reference azerty, on the service ddx_network: 192.168.1.254 for which you are currently the user. A new case regarding a “security hole” matter has been opened, with the following reference: 123456.
We remind you that, as per our Terms of Services, our infrastructure must be used both in a safe and compliant way.

We invite you to log into your console, consult your case and treat the notification received without delay, with the given information provided in it. Our Abuse Team is also following-up on this situation and, if you have any questions, you can contact it by opening a ticket, directly from your console.

Il n’est pas très technique, mais il a tout de même une machine qui tourne avec ses services. Je précise qu’il s’agit bien d’une fresh install de Ubuntu 24.04 LTS sur ce serveur. Il m’indique bien qu’il n’a rien installé concernant CUPS, il ne sait même pas de quoi il s’agit, c’est juste un serveur web.

C’est maintenant le moment d’aller voir un peu ce qu’il se passe pour voir de quoi il en retourne. Je me connecte en SSH et je regarde avec l’un de mes outils préférés pour voir ce qui tourne. À l’aide d’un filtre dans htop je regarde s’il y a bien du CUPS qui tourne :

Bingo ! L’hébergeur ne s’est pas trompé. Le service CUPS tourne bien avec cups-browsed. Il n’a jamais rien installé ce logiciel et ne souhaite pas utiliser une imprimante depuis son serveur web, mais c’est bien là. Par rapport à ce que j’ai indiqué au-dessus, si le serveur est bien sécurisé, normalement, c’est bon mais bon. Il n’a pas besoin de ce service et pourtant, il était bien présent et actif par défaut.

Les mesures contre la faille de sécurité CUPS

Plusieurs choix s’offrent à vous. Cela dépend de la situation comme d’habitude. Dans le cas que nous venons de voir, la solution la plus simple est tout simplement de désactiver tout ce qui concerne CUPS et les imprimantes. De toute façon, ici, ça ne sert à rien … Autant réduire la potentielle surface d’attaque. Attention, ici, je vais seulement parler d’Ubuntu, car c’est le système sur lequel je fais la manipulation, ce sera peut être différent dans votre contexte, mais si vous n’avez pas besoin de CUPS, tuez le pour de bon. Pour désactiver CUPS dans Ubuntu et se protéger de la faille de sécurité le concernant, vous pouvez essayer lancer les commandes suivantes :

sudo systemctl stop cups
sudo systemctl disable cups
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed

Vous pouvez même aller encore plus loin avec un masquage. Le masquage empêche complètement les services d’être démarrés manuellement ou par d’autres services. Cela ajoute une couche supplémentaire pour s’assurer qu’ils ne se relancent pas :

sudo systemctl mask cups
sudo systemctl mask cups-browsed

Dans mon exemple, ça ne marche pas, car on voit dans htop que CUPS est exécuté avec snap. Ce n’est pas grave, on va quand même réussir à l’éliminer pour car encire une fois je précise que je n’en ai pas besoin. On parle d’un serveur web ici. Pour confirmer que CUPS est bien installé avec snap je lance une simple commande :

snap list

Elle me renvoie le résultat suivant avec mon CUPS qui est bien dedans :

Name               Version          Rev    Tracking       Publisher      Notes
bare               1.0              5      latest/stable  canonical✓     base
chromium           128.0.6613.119   2943   latest/stable  canonical✓     -
core22             20240904         1621   latest/stable  canonical✓     base
cups               2.4.10-1         1058   latest/stable  openprinting✓  -
gnome-42-2204      0+git.510a601    176    latest/stable  canonical✓     -
gtk-common-themes  0.1-81-g442e511  1535   latest/stable  canonical✓     -
snapd              2.63             21759  latest/stable  canonical✓     snapd

Pour éliminer CUPS si il s’agit d’un package snap il faut alors faire comme ceci :

sudo snap stop cups
2024-09-28T02:53:58+02:00 INFO Waiting for "snap.cups.cups-browsed.service" to stop.
2024-09-28T02:54:00+02:00 INFO Waiting for "snap.cups.cupsd.service" to stop.

Je le désactive comme vu précédement mais cette fois avec le contecte snap :

sudo snap disable cups
cups disabled

Je vérifie que CUPS est bien mort sur le Ubuntu :

Parfait, CUPS est bien mort sur l’Ubuntu. Je précise qu’ici, il s’agit d’une mesure à chaud, mais qui est tout de même satisfaisante, car le service d’impression CUPS ne sert strictement à rien pour un serveur web. J’étais étonné qu’il soit installé par défaut, mais bon, c’est comme ça.

Attention, ce tutoriel s’applique seulement si vous n’avez pas besoin d’un service d’impression avec votre machine Linux. D’ailleurs, Canonical a déjà réagi en indiquant qu’il fallait mettre à jour votre système Ubuntu. Si vous n’avez pas besoin de CUPS, désactivez-le et mettez à jour votre système.

Sinon mettez à jour en espérant que les correctifs rapides soient suffisants même si l’attaque n’est pas non plus triviale à mettre en place. Quoiqu’il arrive ça va de toute façon vite bouger dans les jours à venir. Pour les autres GNU/Linux, je ne pourrais pas vous en dire plus pour le moment en attendant un gros fix de CUPS qui rassure tout le monde.

3 réflexions au sujet de “Vérifier si votre serveur Linux est vulnérable à l’attaque CUPS”

Laisser un commentaire