1 points par GN⁺ 2024-09-27 | Aucun commentaire pour le moment. | Partager sur WhatsApp

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.

Aucun commentaire pour le moment.