Une faille dangereuse a été dévoilée il y a quelques jours dans CUPS (Common UNIX Printing System), un ensemble de composants qui prennent en charge l'impression dans de nombreux systèmes UNIX (de GNU/Linux à ChromeOS en passant par Solaris). Et de façon un rien ironique, la faille ne semble pas toucher les UNIX d'Apple… alors que CUPS est une technologie Apple. CUPS est un produit open source qu'Apple a employé dès 2002 (dans Mac OS X Jaguar) et qui a été racheté à son créateur — embauché pour l'occasion — en 2007.
Mais parlons des failles, car il y en a plusieurs. Elles ont été découvertes par Simone Margaritelli, qui donne des détails sur son site. La première, CVE-2024-47176, est dans le processus cups-browsed
. Elle est simple : le système accepte n'importe quelle requête sur le port UDP 631 en rapport avec le protocole IPP (Internet Printing Protocol, qui permet d'imprimer en réseau, en résumé). Il est donc possible d'ajouter une (fausse) imprimante sur le système attaqué ou de remplacer une existante uniquement en connaissant l'IP.
La seconde, CVE-2024-47076, est dans libcupsfilters
. Elle permet à l'attaquant d'envoyer des données potentiellement malicieuses dans le système attaqué. La troisième, CVE-2024-47175, est dans libppd
. Elle permet de stocker les commandes dans un fichier PPD (lié à PostScript, qu'Apple ne prend plus en charge). Et la dernière, CVE-2024-47177, est dans cups-filters
et c'est la plus grave : elle permet d'exécuter des commandes depuis un fichier PPD. C'est à cause de cette dernière que les OS d'Apple sont a priori exemptés du problème : cups-filters
existe pour prendre en charge les impressions sur les systèmes qui ne sont pas macOS.
macOS Sonoma se débarrasse de PostScript, probablement pour des raisons de sécurité
En exploitant les quatre failles, un attaquant peut se faire passer pour une imprimante existante (ou en ajouter une) et envoyer des données malicieuses qui seront exécutées quand l'utilisateur imprime. Et c'est par ailleurs le meilleur moyen de se prémunir du problème : ne pas imprimer.
L'attaque fonctionne en réseau local (notamment à travers Bonjour) mais aussi à travers Internet. En effet, de nombreux systèmes laissent un accès libre au port UDP 631. Pour régler le problème, outre ne pas imprimer, donc, il est donc possible de bloquer le trafic sur ce port ou de désactiver cups-browsed
en attendant une mise à jour.