Skip to content
Nouveau rapport : Obtenez votre exemplaire du rapport 2024 sur l'état de l'internet ! | Télécharger aujourd'hui
Avis

Avis de réponse rapide du 27 septembre 2024 : Vulnérabilités dans le service d'impression commun d'Unix (CUPS)

Contexte

Hier, le 26 septembre, après une anticipation importante et un roulement de tambour spectaculaire sur les médias sociaux, une série de vulnérabilités a été divulguée dans le Common Unix Printing Service (CUPS), un utilitaire d'impression largement utilisé dans de nombreuses distributions Linux (en particulier celles-ci, d'après l'article du chercheur original).

Ces vulnérabilités sont résumées ci-dessous :

ID CVE Sévérité Service concerné Description
CVE-2024-47176 8.3 cups-browsed <= 2.0.1 Se lie à UDP INADDR_ANY:631 en faisant confiance à n'importe quel paquet provenant de n'importe quelle source pour déclencher une requête IPP Get-Printer-Attributes vers une URL contrôlée par l'attaquant.
CVE-2024-47076 8.6 libcupsfilters <= 2.1b1 cfGetPrinterAttributes5 ne valide ni n'assainit les attributs IPP renvoyés par un serveur IPP, fournissant des données contrôlées par l'attaquant au reste du système CUPS.
CVE-2024-47175 8.6 libppd <= 2.1b1 ppdCreatePPDFromIPP2 ne valide pas ou n'assainit pas les attributs IPP lors de leur écriture dans un fichier PPD temporaire, ce qui permet l'injection de données contrôlées par l'attaquant dans le PPD résultant.
CVE-2024-47177 9.0 cups-filters <= 2.0.1 foomatic-rip permet l'exécution de commandes arbitraires via le paramètre PPD FoomaticRIPCommandLine.

Source : https://www.evilsocket.net/2024/09/26/Attacking-UNIX-systems-via-CUPS-Part-I/#Summary

La plus populaire de ces vulnérabilités est CVE-2024-47176, qui affecte cups-browsed. Après une discussion sur le forum de sécurité de Red Hat, cette vulnérabilité a d'abord été associée officieusement à un score CVSS de 9,9, mais GitHub lui a récemment attribué un score de 8,3 (élevé).

Comprendre CUPS et IPP

CUPS est présent sur de nombreux systèmes Linux et autres Unix pour gérer les travaux d'impression et les files d'attente. Il est utilisé conjointement avec le protocole d'impression Internet (IPP) pour la communication réseau entre les ordinateurs et les imprimantes. IPP a été conçu pour permettre aux périphériques de découvrir les imprimantes et de gérer les travaux d'impression sur un réseau. Conformément à la RFC8011, ce protocole fonctionne sur TCP et le port 631 lui a été attribué.

En tandem avec IPP, le service cups-browsed découvre de nouvelles imprimantes sur le réseau par diffusion, unicast (grâce à l'auditeur UDP) et mDNS, de sorte que les imprimantes se présentent automatiquement aux clients.

Ce service lié n'est pas IPP ; il s'agit d'un protocole entièrement différent, le CUPS Browse Protocol. Il convient de noter que la communication via ce protocole utilisant la diffusion unique est à sens unique, ce qui signifie que vous pouvez lui envoyer des données, mais que vous ne recevrez jamais de données en retour. Ce fait rend l'analyse d'un tel service presque impossible puisqu'il n'y a pas de données de retour, qu'il fonctionne sur UDP et que, le plus souvent, les messages ICMP de port inaccessible (qui sont la façon dont certains analyseurs déterminent s'il y a un service UDP distant à l'écoute) sont filtrés au niveau de la périphérie ou de l'hôte.

La première CVE de la chaîne est la CVE-2024-47176, qui indique que le service cups-browsed se lie à INADDR_ANY (ce qui signifie qu'il se lie à toutes les interfaces réseau) sur le port UDP 631. Cela permet à n'importe quel utilisateur distant de communiquer avec le service sous-jacent.

Un utilisateur malveillant peut envoyer un paquet spécialement conçu qui informe ce serveur "parcouru" qu'il existe une imprimante IPP (TCP) sur l'internet. Le processus tente ensuite de se connecter à ce serveur distant (en utilisant IPP via TCP) ; une fois la connexion établie, ce serveur malveillant peut renvoyer un ensemble de configurations et de descriptions d'imprimantes PostScript (PPD) qui peuvent inciter le serveur victime à exécuter des commandes arbitraires après qu'un travail d'impression a été mis en file d'attente.

NOTE : Cet exploit nécessite que la victime sélectionne et utilise manuellement le serveur d'impression malveillant.

Cela n'a pas d'importance pour les serveurs qui n'exécutent pas ou n'exposent pas CUPS publiquement. Cependant, si un hôte expose un service CUPS affecté à l'Internet public, un acteur de menace distant peut envoyer un paquet UDP malveillant au port 631 sans avoir besoin d'authentification, ce qui déclenchera alors le service CUPS pour se connecter à nouveau à un serveur malveillant via TCP.

En outre, la même injection de serveur peut être effectuée via mDNS si CUPS a été configuré à cet effet.

De quoi devez-vous vous inquiéter ?

Facteurs d'atténuation du risque :

  • Si CUPS a été installé involontairement sur un serveur mais qu'il n'est jamais utilisé pour imprimer, il est peu probable que cela ait un impact direct, car il faut qu'une personne envoie un travail d'impression à la file d'attente d'impression malveillante. Toutefois, si vous pensez avoir été affecté, exécutez la commande lpstat -a pour dresser la liste de toutes les imprimantes connues sur les ordinateurs locaux. Si l'une des entrées semble étrange ou suspecte, il est fort probable que quelqu'un ait ciblé votre serveur. N'essayez pas d'imprimer sur ce serveur suspect.
  • Cet exploit nécessite une interaction de l'utilisateur (un travail d'impression vers l'imprimante malveillante doit être déclenché) pour conduire à un RCE. De ce fait, il est plus probable que cette vulnérabilité soit utilisée pour se déplacer latéralement au sein d'un réseau :
    • L'attaquant injecte un serveur d'impression malveillant
    • L'attaquant exécute $ echo nop | lpr -P $MALICIOUS_PRINTER_NAME

Les facteurs qui accentuent le risque :

Censys Perspective

Censys révèlent qu'il y a 63 096 services CUPS IPP exposés qui fonctionnent sur l'internet public. Notez que vous ne pouvez pas déterminer si le protocole Browse est en cours d'exécution à moins d'envoyer l'exploit réel et de demander au service de se connecter en retour via TCP.

Parmi ceux-ci, 7 289 montrent des indications d'exécution d'une version affectée par ces CVE (versions = 2.0.1). Il convient de noter que les services concernés sont comptabilisés différemment selon les scanners. Dans le cadre de cet article, nous considérons TCP/631 (IPP) comme un indicateur de l'exposition potentielle à UDP/631.

Map of Publicly Exposed CUPS services running a version <= 2.0.1.

Notez que tous ces services n'exécutent pas nécessairement le démon cups-browsed concerné et, une fois encore, un travail d'impression doit être déclenché sur la machine cible vers l'imprimante malveillante pour que l'exploit réussisse.

Pays Nombre d'hôtes
États-Unis 2230
Corée du Sud 567
Taïwan 522
France 343
Allemagne 207
Japon 204
Italie 183
Hong Kong 178
Royaume-Uni 174
Pologne 172

Que peut-on faire ?

Il est déconseillé d'exposer un service CUPS à l'internet public, à moins que cela ne soit absolument nécessaire pour son fonctionnement. Il n'existe pas encore de correctif pour cette vulnérabilité, il est donc recommandé de désactiver le service cups-browsed en exécutant les commandes suivantes sur votre serveur :

systemctl stop cups-browsed
systemctl disable cups-browsed

En outre, il est recommandé de bloquer le trafic vers 631/UDP - mais notez que cela ne réduit pas le risque d'exploitation du réseau local via mDNS ou les autres canaux mentionnés ci-dessus.

Références

Solutions de gestion de la surface d'attaque
En savoir plus