Apache Guacamole: plusieurs failles liées au protocole RDP

Apache Guacamole, une infrastructure populaire qui permet de travailler à distance, est vulnérable à une multitude de failles de sécurité liées au protocole RDP (Remote Desktop Protocol), ont averti les chercheurs. Les administrateurs doivent mettre à jour leurs systèmes pour éviter les attaques visant à voler des informations ou à exécuter du code à distance.

“Une fois qu’il contrôle la passerelle, un attaquant peut écouter toutes les sessions entrantes, enregistrer toutes les informations d’identification utilisées et même démarrer de nouvelles sessions pour contrôler le reste des ordinateurs de l’organisation”, a expliqué Eyal Itkin, chercheur de Check Point, dans un communiqué. «Lorsque la majeure partie de l’organisation travaille à distance, cela équivaut à acquérir un contrôle total sur l’ensemble du réseau de l’organisation.»

apache guacamole

Apache Guacamole compte plus de 10 millions de téléchargements dans le monde et est également intégré à d’autres produits tels que Jumpserver Fortress, Quali et Fortigate. Les passerelles Guacamole sécurisent et gèrent essentiellement les connexions des utilisateurs se trouvant à l’extérieur du périmètre de l’entreprise.

“Généralement, un employé utilise un navigateur pour se connecter au serveur Internet de son entreprise, passe par un processus d’authentification et accède à son ordinateur d’entreprise”, a déclaré Itkin. «Alors que l’employé utilise uniquement son navigateur, le serveur Guacamole sélectionne l’un des protocoles pris en charge (RDP, VNC, SSH, etc.) et utilise un client open source pour se connecter à l’ordinateur d’entreprise. Une fois connecté, le serveur Guacamole agit comme un intermédiaire qui relaie les événements d’avant en arrière tout en les traduisant du protocole choisi vers le «protocole Guacamole» et vice versa. »

Les vulnérabilités permettent à un attaquant sur le réseau de compromettre une passerelle, puis d’intercepter et de contrôler toutes les sessions qui s’y connectent.

«Cette transition [due au COVID-19] du travail sur site au travail à distance signifie que les solutions informatiques pour la connexion à distance au réseau d’entreprise sont désormais plus utilisées que jamais», a ajouté Itkin. «Cela signifie également que toute vulnérabilité dans ces solutions aura un impact beaucoup plus important, car les entreprises s’appuient sur cette technologie pour maintenir leurs activités professionnelles.»

Selon Check Point, Apache Guacamole est vulnérable à plusieurs failles critiques au sein de sa propre infrastructure, ainsi qu’à d’autres vulnérabilités trouvées dans FreeRDP.

Scénarios d’attaque et failles d’Apache Guacamole

Il existe deux scénarios d’attaque différents, a expliqué le chercheur: dans une attaque inversée, une machine compromise à l’intérieur du réseau d’entreprise exploite la connexion entrante pour attaquer la passerelle, dans le but de la prendre en charge. Et dans le scénario d’un employé malveillant, un employé utilise un ordinateur à l’intérieur du réseau pour tirer parti de son emprise aux deux extrémités de la connexion et prendre le contrôle de la passerelle.

Pour activer l’un ou l’autre, une chaîne d’exploits utilisant des failles de divulgation d’informations, un problème de corruption de mémoire et une exploitation des privilèges sont nécessaires – ce que Check Point a démontré dans une vidéo.

“[Il y a] une forte probabilité que la plupart des entreprises n’aient pas encore mis à niveau vers les dernières versions, et pourraient déjà être attaquées en utilisant ces failles connus”, a averti Itkin.

La faille identifiée comme CVE-2020-9497 permet la divulgation d’informations.

“Pour relayer les messages entre la connexion RDP et le client, les développeurs ont implémenté leur propre extension pour les canaux RDP par défaut”, selon le document. “Un de ces canaux est responsable de l’audio du serveur, d’où son appelation rdpsnd (RDP Sound).”

En envoyant un message rdpsnd sur le canal, un serveur RDP malveillant pourrait amener le client à penser que le paquet contient une énorme quantité d’octets, qui sont en fait des octets de la mémoire du client lui-même, a ajouté Itkin: «Cela pousse le client à renvoyer une réponse au serveur avec ces octets, et accorder au serveur RDP une divulgation d’informations. »

Une autre faille de divulgation d’informations, aussi liée à CVE-2020-9497, est similaire, mais la faille envoie les données au client connecté, au lieu de les renvoyer au serveur RDP.

“Nous avons trouvé une chaîne supplémentaire, guacai, responsable des messages sonores”, selon Itkin. «Cette chaîne est responsable de l’entrée audio, d’où le nom de guacai. Bien que vulnérable à peu près à la même vulnérabilité que le canal précédent, ce canal est désactivé par défaut. »

L’analyse a également révélé CVE-2020-9498, un problème de corruption de mémoire permettant des exécutions de code à distance.

«Le protocole RDP expose différents «appareils» comme des «canaux» distincts, un pour chaque appareil. Il s’agit notamment du canal rdpsnd pour le son, cliprdr pour le presse-papiers, etc. », selon l’analyse. “En tant que couche d’abstraction, les messages du canal utilise une fragmentation qui permet à leurs messages de mesurer jusqu’à 4 Go.”

Le premier fragment de tout message doit contenir le fragment CHANNEL_FLAG_FIRST, qui alloue le flux de bonne taille (appelé wStream) pour tenir compte de la longueur totale déclarée du message.

«Cependant, que se passe-t-il si un attaquant envoie un fragment sans ce drapeau? Il semble qu’il soit simplement ajouté au flux précédent », a expliqué Itkin. «Après qu’un message fragmenté ait terminé le réassemblage pour ensuite être analysé, il est libéré. Et c’est tout. Personne ne définit le pointeur sur NULL. »

Cela signifie qu’un serveur RDP malveillant pourrait envoyer un fragment de message qui utilise l’objet wStream précédemment libéré, créant ainsi une vulnérabilité use-after-free qui peut à son tour être utilisée pour des exploits de lecture et d’écriture arbitraires.

«En utilisant les vulnérabilités CVE-2020-9497 et CVE-2020-9498, nous avons réussi à implémenter nos primitives d’exploitation arbitraire en lecture et en écriture», a déclaré Itkin. «En utilisant ces deux puissantes primitives, nous avons réussi à implémenter un exploit RCE dans lequel un ordinateur d’entreprise malveillant (notre« serveur »RDP) peut prendre le contrôle du processus guacd lorsqu’un utilisateur distant demande à se connecter à son ordinateur (infecté).»

Ce processus guacd ne gère qu’une seule connexion et s’exécute avec de faibles privilèges. Check Point a donc cherché un chemin vers l’élévation de privilèges qui permettrait la prise de contrôle de la passerelle.

Une fois qu’un client a été authentifié avec succès, le client guacamole lance une session de protocole Guacamole avec le serveur guacamole pour créer une session correspondante pour le client. Cela se fait en se connectant au serveur guacamole sur le port TCP 4822 (par défaut) sur lequel le processus guacd écoute. La communication sur ce port n’utilise ni authentification ni chiffrement (SSL pourrait être activé, mais ce n’est pas la valeur par défaut). Une fois la session créée, le client guacamole ne relaie que les informations entre le serveur guacamole et le navigateur du client.

Une vulnérabilité dans l’exécutable guacd permet d’accéder à la mémoire – utile pour contourner la sécurité informatique de l’Address Space Layout Randomization (ASLR) – et au contenu de la mémoire.

En utilisant toutes ces failles, Itkin a déclaré que les chercheurs de Check Point ont pu prendre le contrôle total d’une passerelle de test Guacamole, interceptant toutes les informations qui la traverse.

apache guacamole

Il convient de noter que l’infrastructure est également vulnérable aux failles existantes dans FreeRDP, une implémentation gratuite de RDP, publiée sous la licence Apache.

«Dans nos recherches précédentes… nous avons trouvé plusieurs vulnérabilités critiques dans ce client RDP qui l’exposaient aux attaques d’un «serveur» RDP malveillant», selon le chercheur. «En d’autres termes, un ordinateur d’entreprise malveillant peut prendre le contrôle d’un client FreeRDP qui s’y connecte… .En regardant les versions publiées d’Apache Guacamole, nous pouvons voir que seule la version 1.1.0, publiée fin janvier 2020 , a ajouté la prise en charge de la dernière version de FreeRDP (2.0.0). Sachant que nos vulnérabilités dans FreeRDP n’ont été corrigées que sur la version 2.0.0-rc4, cela signifie que toutes les versions publiées avant janvier 2020 utilisent des versions vulnérables de FreeRDP. »

Apache a résolu tous ces problèmes avec la sortie de la version 1.2.02 le 28 juin.

Si cet article vous a plu, jetez un œil à notre article précédent.