À cause de plusieurs failles de sécurité découvertes dans le système d’impression CUPS, il est possible d’exécuter du code à distance sur les machines Linux vulnérables. Mais, il y a des chances pour que votre machine ne soit pas vulnérable. Faisons le point.
Commençons par quelques mots sur CUPS (Common UNIX Printing System) : il s’agit du système d’impression le plus répandu sur les systèmes Linux. Il est aussi pris en charge par d’autres systèmes tels que FreeBSD, OpenBSD ou encore NetBSD.
Le chercheur en sécurité Simone Margaritelli a fait la découverte de plusieurs vulnérabilités dans les composants de CUPS :
- CVE-2024-47076 dans libcupsfilters,
- CVE-2024-47175 dans libppd
- CVE-2024-47176 dans cups-browsed
- CVE-2024-47177 dans cups-filters
L’un des composants est le démon cups-browsed, qui recherche sur le réseau local les imprimantes partagées ou en réseau et les rend disponibles pour l’impression sur la machine. Ceci est équivalent à la recherche d’imprimantes depuis Windows et macOS.
Simone Margaritelli a découvert que si le démon cups-browsed est activé (ce qui n’est pas le cas sur la plupart des systèmes), il écoute sur le port 631, en UDP. Par défaut, il autorise les connexions distantes de n’importe quel appareil sur le réseau pour créer une nouvelle imprimante.
Il a également découvert que s’il exposait sur le réseau une imprimante malveillante (avec un script PostScript Printer Description – PPD), il pouvait faire en sorte qu’elle soit automatiquement installée par les machines qui vont effectuer une découverte réseau. Ainsi, la commande malveillante stockée dans le PPD sera exécutée à distance sur la machine.
Une attaque difficile à mettre en œuvre…
Cette attaque repose donc sur l’exploitation d’une chaine d’exploitation basée sur plusieurs vulnérabilités. L’impact sur les machines Linux est limité, car il y a plusieurs conditions à respecter. Par exemple, le système pris pour cible doit avoir le démon cups-browsed activé, ce qui n’est généralement pas le cas par défaut.
« Il s’agit d’un RCE, mais avec plusieurs atténuations, notamment le fait que l’attaquant doit pouvoir se connecter à un ordinateur via UDP, qui est largement désactivé à l’entrée du réseau, et que le service n’est généralement pas activé par défaut. Il semble que l’impact sur le monde réel soit faible.« , précise le chercheur en sécurité.
Comment se protéger ?
Pour le moment, les correctifs sont en cours de développement. Mais, pour vous protéger, vous pouvez arrêter et désactiver le service « cups-browsed » :
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
Si le service est actif, mais qu‘il n’est pas autorisé dans le pare-feu local de votre machine, alors les flux seront bloqués. Si vous utilisez Red Hat, vous pouvez lire cet article pour en savoir plus sur les mesures d’atténuation disponibles.