Attaques contre les systèmes UNIX : attaques via CUPS, partie I
Résumé
- CVE-2024-47176 :
cups-browsed <= 2.0.1 se lie à UDP INADDR_ANY:631, ce qui permet de déclencher des requêtes IPP Get-Printer-Attributes vers une URL contrôlée par l’attaquant
- CVE-2024-47076 :
libcupsfilters <= 2.1b1, via cfGetPrinterAttributes5, ne valide ni n’assainit les attributs IPP renvoyés par un serveur IPP, ce qui permet à l’attaquant de fournir des données contrôlées au système CUPS
- CVE-2024-47175 :
libppd <= 2.1b1, via ppdCreatePPDFromIPP2, ne valide ni n’assainit les attributs IPP lors de leur écriture dans un fichier PPD temporaire, ce qui permet d’injecter des données contrôlées par l’attaquant
- CVE-2024-47177 :
cups-filters <= 2.0.1, via foomatic-rip, permet l’exécution de commandes arbitraires à travers le paramètre PPD FoomaticRIPCommandLine
Impact
- Un attaquant distant non authentifié peut remplacer l’URL IPP d’une imprimante existante par une URL malveillante ou installer une nouvelle imprimante, puis exécuter des commandes arbitraires au démarrage d’un travail d’impression
Points d’entrée
- WAN / Internet public : un attaquant distant envoie des paquets UDP vers le port 631. Aucune authentification n’est requise
- LAN : un attaquant local peut usurper des annonces zeroconf / mDNS / DNS-SD afin d’obtenir une RCE par le même chemin de code
Systèmes affectés
- La plupart des distributions GNU/Linux
- Certains BSD
- Google Chromium / ChromeOS (possible)
- Oracle Solaris
- Autres
Correctifs
- Désactiver et supprimer le service
cups-browsed
- Mettre à jour les paquets CUPS du système
- Si le système ne peut pas être mis à jour, bloquer le port UDP 631 ainsi que tout le trafic DNS-SD
Introduction
- Il y a quelques semaines, lors de la configuration d’un nouvel ordinateur portable sous Ubuntu, la commande
netstat -anu a été exécutée pour vérifier quels services écoutaient sur des ports UDP
- Il a été constaté que
cups-browsed écoutait et répondait en UDP sur toutes les interfaces réseau via le port 631
cups-browsed sert à ajouter automatiquement de nouvelles imprimantes au système
Qu’est-ce que cups-browsed ?
cups-browsed fait partie du système CUPS : il découvre de nouvelles imprimantes et les ajoute automatiquement au système
- Son fichier de configuration par défaut est commenté, ce qui permet à n’importe qui de s’y connecter
Débordement de tampon sur la pile et condition de concurrence
cups-browsed n’est pas couvert par oss-fuzz
- Un débordement de tampon sur la pile et une condition de concurrence peuvent survenir dans la fonction
process_browse_data
- Ces problèmes ont été signalés aux développeurs et au CERT, mais n’ont pas encore été corrigés
Retour à found_cups_printer
- La fonction
found_cups_printer extrait l’URL depuis le paquet et la transmet à la fonction cfGetPrinterAttributes
- Cette URL se connecte à un serveur contrôlé par l’attaquant
Internet Printing Protocol (IPP)
- IPP est un protocole de communication entre les appareils clients et les imprimantes
- En renvoyant des attributs d’imprimante contrôlés par l’attaquant, il devient possible d’ajouter une imprimante au système
Récapitulatif de GN⁺
- Cet article explique comment exploiter des vulnérabilités du système CUPS pour obtenir une exécution de code à distance
- Plusieurs vulnérabilités liées à CUPS permettent à un attaquant de prendre le contrôle du système
- Ces vulnérabilités ne sont pas encore corrigées, et les utilisateurs doivent désactiver les services CUPS ou les mettre à jour
- Parmi les autres projets offrant des fonctionnalités similaires figurent
LPRng et les versions récentes de CUPS
Aucun commentaire pour le moment.