Blog

Analyse approfondie : Naviguer dans la vulnérabilité critique de CUPS dans les systèmes GNU-Linux

October 7, 2024
Laura Verheyde

Les utilisateurs de Linux n'ont pas eu la vie facile ces derniers temps, plusieurs vulnérabilités de haute gravité ayant apparemment affecté le système de différentes manières au cours des dernières années. Les chercheurs en sécurité ont maintenant un autre groupe de vulnérabilités à analyser, toutes liées à la fonction CUPS (Common UNIX Printing System) ciblant les systèmes GNU/Linux et présentant une voie potentielle pour une puissante exécution de code à distance (RCE).

Le 27 septembre 2024, Simone Margaritelli d'evilsocket.net informations critiques publiées sur plusieurs vulnérabilités exploitables dans CUPS, et des CVE ont ensuite été attribués à quatre d'entre elles. Ce chiffre pourrait augmenter, mais au moment de la rédaction de cet article, la communauté de la sécurité débat de la gravité réelle de ces découvertes. Alors que l'un des CVE, CVE-2024-47177, a actuellement une cote de gravité critique de 9,1 selon MITRE. La réussite de la manipulation de cette faille d'injection de commandes dépend des serveurs sur lesquels le service CUPS est activé et nécessite en outre l'accès au port UDP 631 ou au DNS-SD. Chapeau rouge note toutefois qu'il est possible de remapper CUPS vers un autre port.

La description complète de l'incident par Margaritelli révèle une chaîne d'attaques insidieuse et complexe qui, malgré les désaccords communautaires, ne doit pas être ignorée. Cela nous donne une leçon sur les dépendances apparemment inoffensives qui peuvent être largement exploitées si l'acteur de la menace est suffisamment déterminé et si de petites opportunités ont été laissées ouvertes en raison de modèles de codage médiocres.

Le scénario CUPS est légèrement différent de ce que de nombreux développeurs et professionnels de l'AppSec ont pu expérimenter auparavant. Jetons-y un coup d'œil et testons vos compétences en cours de route.

La vulnérabilité : exécution de code à distance (RCE) via CUPS

Le Le blog d'Evilsocket fournit un historique complet et inégalé de ces exploits, et c'est une ressource que nous continuerons de suivre de près. Margaritelli cite également une source anonyme dans son article, qui ne semble pas optimiste quant à la robustesse générale de la sécurité de Linux :



»Du point de vue de la sécurité générique, tout un système Linux tel qu'il est aujourd'hui n'est qu'un fouillis infini et désespéré de failles de sécurité qui attendent d'être exploitées.»

Il s'agit d'un rappel inquiétant des risques de sécurité inhérents aux environnements open source, sans parler de la nécessité impérieuse d'une sensibilisation accrue à la sécurité et de compétences en matière de codage sécurisé au sein de la communauté mondiale du développement.

Jetons un coup d'œil aux CVE :

La chaîne de vulnérabilités est très étendue et affecte actuellement toutes les versions actuelles et précédentes des packages suivants :

  • distrotech/cups-filters
  • OpenPrinting/CUPS - Filtres
  • Gobelets feuilletés
  • filtres libcupsfilters
  • libppd

CUPS est un composant traditionnel des systèmes d'exploitation UNIX et Linux depuis plus de 20 ans. Sa fonction de dépendance aux services d'impression l'incite à effectuer des requêtes réseau, ce qui en fait une cible de choix pour les vulnérabilités de classe RCE.

Dans ce cas, cependant, il y a une certaine ingéniosité dans la façon dont les attaques se combinent pour aboutir à un résultat positif. Il s'agit essentiellement de la capacité d'un attaquant non authentifié et non détecté à remplacer les URL du protocole IPP (Internet Printing Protocol) par des URL malveillantes, en plus de modifier les directives qui peuvent provoquer l'injection de commandes dans le fichier « PPD (PostScript Printer Description) », qui est un fichier utilisé pour décrire les fonctionnalités de l'imprimante nouvellement ajoutée. Cela entraîne une attaque d'exécution de commande une fois qu'une tâche d'impression est activée, et repose sur un manque de validation des entrées dans les composants CUPS.

De plus, la correction de cette vulnérabilité particulière crée une sorte d'arme à double tranchant, comme Evilsocket souligne. CUPS inclut le filtre foomatic-rip, un exécutable qui a toujours été considéré comme un composant exploitable à haut risque. Les CVE relatifs à ce composant remontent à 2011, et bien qu'il ait été établi que foomatic-rip peut être utilisé pour exécuter des commandes du système d'exploitation, sa résolution entraîne des problèmes de stabilité et la perte de support pour de nombreuses imprimantes plus anciennes. Il s'agit d'un problème complexe à surmonter.

  1. L'acteur de la menace est à l'origine de l'attaque
    1. CVE-2024-47176: cups-browsed <= 2.0.1 est vulnérable car il se lie au port UDP 631 à l'aide de INADDR_ANY, ce qui signifie qu'il fait confiance à tout paquet reçu de n'importe quelle source. Cela permet à un attaquant distant non authentifié d'envoyer un paquet UDP malveillant avec une URL IPP manipulée (pointant vers le serveur IPP contrôlé par l'attaquant), déclenchant ainsi la vulnérabilité. La machine de la victime pense maintenant qu'elle est connectée à une nouvelle imprimante et envoie une demande demandant les attributs de l'imprimante.
  2. Le système victime traite les attributs de l'imprimante
    1. CVE-2024-47076: libcupsfilters <= 2.1b1 présente une vulnérabilité dans CFGetPrinterAttributes5, qui ne valide ni ne nettoie correctement les attributs IPP renvoyés par un serveur IPP. Lorsque cups-browsed traite le paquet, il peut être amené à lire les attributs malveillants envoyés par l'attaquant.
  3. Le système victime se connecte au serveur IPP du contrôleur de l'attaquant
    1. CVE-2024-47175: libppd <= 2.1b1 de la fonction PPDCreatePPDFromIPP2 ne valide ni ne nettoie correctement les attributs IPP lors de leur enregistrement dans un fichier PPD (PostScript Printer Description) temporaire. Cela permet à l'attaquant d'injecter des données arbitraires dans un fichier PPD, y compris la directive FoomaticripCommandLine, que le système d'impression peut exécuter ultérieurement.
  4. Le système victime lance la tâche d'impression et le code de l'attaquant est exécuté
    CVE-2024-47177
    : cups-filters <= 2.0.1 est vulnérable car le filtre foomatic-rip exécute des commandes arbitraires via la directive FoomaticripCommandLine, permettant à l'attaquant d'exécuter des commandes en tant que processus parcouru par cups-browsed. L'attaquant attend que la machine de la victime lance une tâche d'impression. Au moment où cela se produit, le code malveillant de l'attaquant sera exécuté (exécution de code à distance).

Comment pouvez-vous atténuer les risques liés au RCE ?

Les entreprises qui utilisent CUPS dans le cadre de leurs activités commerciales doivent suivre les conseils de remédiation recommandés par Prise maléfique et Chapeau rouge. Cela inclut, mais sans s'y limiter, l'application de correctifs de sécurité en tant que priorité en cas d'urgence.

Pour l'injection de commandes en général, consultez notre guide complet.

Si vous souhaitez obtenir plus de directives de codage gratuites, consultez Coach de code sécurisé pour vous aider à rester au fait des meilleures pratiques en matière de codage sécurisé.

Slogan

Govern AI-driven development before it ships

Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.

book a demo
Slogan

Explore more blogs

Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.

browse all
Case Study
Filter Label
This is some text inside of a div block.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Learn More
Case Study
Filter Label
This is some text inside of a div block.

One Culture of Security: How Sage built their security champions program with agile secure code learning

Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.

Learn More
Blog
Filter Label
This is some text inside of a div block.

The Future of AI Software Governance Is Built on Strong Partnerships

Discover why Secure Code Warrior is becoming a channel-first company and how trusted partners help organizations adopt AI Software Governance securely and at scale.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Citizen AI by Secure Code Warrior: Build an AI-Ready Workforce

Secure Code Warrior's AI literacy program for non-developer employees.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Why most CISOs are navigating AI adoption blindfolded (and how they can remove it)

Today, Secure Code Warrior issued an all-new white paper covering a prescriptive, directional AI adoption model that security leaders can use to identify their adoption stage and make real progress in bringing the AI security risks within their organization under control.

Learn More

Secure AI-driven development before it ships

See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

Book a demo
trust score