Les failles de CUPS permettent l’exécution de code à distance sous Linux, mais il y a un problème
Dans certaines conditions, les attaquants peuvent enchaîner un ensemble de vulnérabilités dans plusieurs composants du système d’impression open source CUPS pour exécuter du code arbitraire à distance sur des machines vulnérables.
Suivi comme CVE-2024-47076 (libcupsfilters), CVE-2024-47175 (libppd), CVE-2024-47176 (cups-browsed) et CVE-2024-47177 (cups-filters) et découvert par Simone Margaritellices failles de sécurité n’affectent pas les systèmes dans leur configuration par défaut.
CUPS (abréviation de Common UNIX Printing System) est le système d’impression le plus utilisé sur les systèmes Linux, et il est également généralement pris en charge sur les appareils exécutant des systèmes d’exploitation de type Unix tels que FreeBSD, NetBSD et OpenBSD et leurs dérivés.
L’un de ses composants est le démon cups-browsed, qui recherche sur le réseau local les imprimantes réseau ou partagées annoncées et les rend disponibles pour l’impression sur la machine. Ceci est similaire à la façon dont Windows et Mac peuvent rechercher sur le réseau des imprimantes réseau distantes sur lesquelles imprimer.
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 écoutera sur le port UDP 631. Il permettra également, par défaut, aux connexions à distance depuis n’importe quel périphérique du réseau de créer une nouvelle imprimante.
Il a découvert qu’il pouvait créer une imprimante PostScript Printer Description (PPD) malveillante qui pourrait être annoncée manuellement à un service exposé parcouru par cups s’exécutant sur le port UDP 631.
Cela amène la machine distante à installer automatiquement l’imprimante malveillante et à la rendre disponible pour l’impression. Si l’utilisateur de ce serveur exposé imprime sur la nouvelle imprimante, la commande malveillante du PPD sera exécutée localement sur l’ordinateur.
La commande à exécuter lors de l’impression est ajoutée via un filtre anti-déchirurequi exécute des commandes sur un périphérique afin qu’un travail d’impression soit rendu correctement.
Impact mondial limité
Bien qu’il s’agisse d’une chaîne d’exécution de code à distance, il convient de noter d’emblée que les attaquants doivent surmonter certains obstacles pour exploiter les vulnérabilités et réaliser réellement l’exécution de code à distance.
La première est que les systèmes ciblés doivent avoir le démon cups-browsed activé, qui n’est généralement pas activé par défaut, pour exposer leurs ports UDP sur un réseau. Ensuite, l’attaquant doit inciter un utilisateur à imprimer à partir d’un serveur d’imprimante malveillant sur son réseau local qui apparaît soudainement sur sa machine.
« Il s’agit d’une chaîne de bogues qui reposent sur l’usurpation d’une imprimante sur votre réseau local et qui est automatiquement ajoutée via la découverte du réseau si elle est activée – généralement pas dans sa configuration par défaut. Ensuite, une variable non vérifiée est utilisée pour exploiter d’autres vulnérabilités. dans le système CUPS pour exécuter du code, mais uniquement lorsqu’un travail d’impression est déclenché, » dit Ilkka Turunen, directeur technique de terrain chez Sonatype.
« Bonne nouvelle alors : 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é lors de l’entrée du réseau et le service n’est généralement pas activé par défaut. Il semble que le l’impact dans le monde réel est faible.
Pour ces raisons, Red Hat a évalué les défauts comme ayant un impact de gravité « Important » au lieu de critique.
Alors que les tests de BleepingComputer ont montré que le service n’était pas activé par défaut sur la plupart de nos serveurs Linux, l’une de nos machines virtuelles Ubuntu l’a fait.. D’autres ont a également noté sur Twitter, Cups-Browsed était activé par défaut sur leurs appareils Linux.
Pas de correctifs, mais des mesures d’atténuation sont disponibles
Alors que les correctifs sont encore en développement, Red Hat a partagé des mesures d’atténuation exigeant que les administrateurs arrêtent l’exécution du service parcouru par cups et empêchent son démarrage au redémarrage à l’aide des commandes suivantes pour rompre la chaîne d’exploitation :
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
Les utilisateurs de Red Hat peuvent également utiliser la commande suivante pour savoir si cups-browsed est en cours d’exécution sur leurs systèmes :
sudo systemctl status cups-browsed
Si le résultat affiche « Actif : inactif (mort) », alors la chaîne d’exploitation est interrompue et le système n’est pas vulnérable. Si le résultat indique « en cours d’exécution » ou « activé » et que la directive « BrowseRemoteProtocols » contient la valeur « cups » dans le fichier de configuration /etc/cups/cups-browsed.conf, alors le système est vulnérable.