Les infrastructures cloud sont des ressources informatiques comme les autres, avec leurs points forts mais aussi leurs faiblesses. Les pirates l'ont bien compris et les cyberattaques visant ce type d'environnements se multiplient. En mars dernier, des cybercriminels sont par exemple parvenus à tirer partie de vulnérabilités dans le système de stockage objet distribué MinIO. Identifiées en tant que CVE-2023-28432 et CVE-2023-28434, ces failles depuis corrigées sont toujours particulièrement préoccupantes. « L'évolution vers des stratégies multicloud au sein des entreprises amplifie encore l'importance des solutions de stockage non natives. Ces solutions apportent la liberté d'opérer entre différents fournisseurs de cloud, mais élargissent également la surface d'attaque potentielle, augmentant ainsi les risques de sécurité [...] L'augmentation des partenariats et des intégrations, tels que ceux avec Kubernetes, Prometheus et Grafana, étend non seulement la portée et l'adoption du stockage d'objets non natif, mais ajoute également une nouvelle couche de complexité au paysage de la sécurité. Chaque point d'intégration sert potentiellement de vecteur d'attaque supplémentaire, ce qui augmente les enjeux pour garantir des mesures de sécurité robustes », analyse Security Joes.

Dans le cadre d'une enquête, le fournisseur a ainsi découvert l'existence d'une chaîne d'exploitation visant spécifiquement ces solutions qui intéressent de plus en plus les cyberattaquants. « Il a été surprenant de découvrir que ces produits pouvaient avoir un ensemble de vulnérabilités critiques relativement faciles à exploiter, ce qui en fait un vecteur d'attaque séduisant que les acteurs malveillants peuvent trouver via les moteurs de recherche. En outre, l'impact immédiat associé à cette attaque spécifique, par rapport aux Webshells traditionnels, soulève des inquiétudes encore plus grandes », explique Security Joes dans une analyse.

Une version compromise de MinIO utilisée

La situation est préoccupante pour les utilisateurs de systèmes MinIO non mis à jour antérieurs à la version 2023-03-20T20-16-18Z et potentiellement déboucher sur de l'exécution de code à distance et de la prise de contrôle. L'analyse de Security Joes apporte ainsi des informations intéressantes sur les acteurs de la menace responsables de l'exploitation de ces vulnérabilités, y compris leurs tactiques, techniques et procédures (TTP), les indicateurs de compromission (IOC), et les caractéristiques des serveurs de commande et de contrôle (C2) utilisés au cours de ces attaques. « L'auteur de la menace a choisi un serveur C2 avec un certain nombre de ports ouverts [...] Chacun d'entre eux est utilisé pour différents types d'actions administratives. Les canaux les plus intéressants avec lesquels notre équipe a interagi sont 80 et 443 pour télécharger divers outils par le biais de répertoires et de fichiers fuzzés, mais le port 10007 n'est pas l'une des interfaces administratives C2 habituelles et a donc également attiré notre attention », explique Security Joes.

Au cours de son enquête, l'équipe de réponse à incident du fournisseur a passé au crible une version compromise de MinIO utilisée également par les cybercriminels (ajout et modification de commandes de cmd/x.go, cmd/routers.go et cmd/generic-handlers.go) contenant un backdoor. Dénommée evil_minio, cette application vérolée dispose de code supplémentaire de binaire spécifique exposant un terminal endpoint à la modification et à l'exécution de commandes via des requêtes HTTP. « Ce point d'accès fonctionne comme une porte dérobée intégrée, qui permet à des personnes non autorisées d'exécuter des commandes sur l'hôte qui exécute l'application. En particulier, les commandes exécutées héritent des autorisations système de l'utilisateur qui a lancé l'application », souligne Security Joes. « Les plateformes open source telles que MinIO ont particulièrement séduit un large éventail d'utilisateurs, des start-ups aux grandes entreprises, grâce à la flexibilité et à l'indépendance qu'elles offrent par rapport aux écosystèmes cloud spécifiques. Cependant, cette nature open source pose également un risque de sécurité important lorsque ces solutions sont téléchargées à partir de sources non officielles ou compromises ». 

Des variables d'environnement aggravant la vulnérabilité

Le processus d'exploitation identifié par les chercheurs en sécurité commence par une requête élaborée ciblant un endpoint via une requête /minio/bootstrap/v1/verify pour obtenir les valeurs des variables d'environnement utilisées par l'application. « Ceci est d'autant plus important que MinIO s'appuie sur des variables d'environnement pour configurer les informations d'identification de l'administrateur, ce qui accroît la gravité de la vulnérabilité. En d'autres termes, avec une seule requête, un attaquant peut récupérer les informations d'identification de l'administrateur d'une instance vulnérable », indique Security Joes. « Après avoir réussi à découvrir les informations d'identification de l'administrateur, l'acteur malveillant est en mesure d'établir une connexion et de communiquer avec l'instance compromise par l'intermédiaire du client MinIO. Cet outil, qui peut être téléchargé à partir du site web officiel, sert de canal d'interaction. Après avoir pris pied dans l'instance compromise, l'attaquant exploite la commande de mise à jour de l'administrateur. Cette commande particulière permet à l'attaquant de désigner une autre URL pour les mises à jour ».

Le piège peut alors se refermer sur les victimes : « Dans des circonstances normales, cette commande fonctionne comme une approche officielle et simplifiée de la mise à jour d'une installation MinIO. Cependant, l'attaquant tire parti de cette utilité en spécifiant un autre MIRROR_URL pour la mise à jour. Ce faisant, il peut effectivement remplacer le binaire authentique par son équivalent malveillant, hébergé sur un serveur distant qu'il contrôle », explique le fournisseur. « En remplaçant le binaire MinIO authentique par son homologue malveillant l'attaquant scelle la compromission du système ».

Des scripts passant sous le radar de la détection des menaces

Une des particularités de cette chaine d'attaque tient aussi au fait que le fonctionnement du backdoor mis en oeuvre n'a rien de conventionnel, aucune trace de scripts suspects n'ayant été trouvé rendant la détection de compromission quasi impossible. « Notre enquête a révélé que cet acteur fait preuve d'un degré significatif d'expérience et d'expertise dans l'utilisation de scripts bash et du langage de programmation Python. Cette expertise s'étend aux applications côté client et côté serveur. Après avoir réussi à compromettre l'installation MinIO et à obtenir l'exécution de code à distance par le biais du backdoor intégré dans le binaire MinIO compromis, les attaquants ont ensuite enclenché plusieurs actions à commencer par le téléchargement de la charge virale primaire à l'aide de script s'appuyant sur des utilitaire standard curl et wget en contexte Linux et winhttpjs.bat en environnement Windows.

Après avoir recueilli des données complètes sur l'hôte (coordonnées de l'utilisateur, mémoire disponible, cronjobs installés, utilisation du disque...), des scripts supplémentaires sont exécutés en reconnaissance réseau (identification des interfaces, ports accessibles...). « La logique de ce scanner de réseau est simple. Tout d'abord, le script vérifie si un interpréteur Python compatible est présent sur l'hôte compromis. Si une version compatible de Python est trouvée, il télécharge un script Python nommé scan.py et exécute la logique d'analyse à partir de là », indique Security Joes. « Si aucun interpréteur Python compatible n'est détecté sur le système, le script télécharge un binaire Linux autonome appelé scan_linux. Ce binaire est un exécutable compilé du script Python qui comprend toutes les bibliothèques nécessaires à l'exécution de la logique d'analyse ». 

Des acteurs malveillants armés pour compromettre d'autres environnements

Dans les cas où aucun interpréteur Python compatible n'est pas disponible, le script télécharge alors un binaire Python autonome compilé, networks_linux spécifique pour les systèmes Linux. « Cette approche offre à l'attaquant de recueillir des informations sur les interfaces réseau présentes sur la machine compromise dans différents environnements sans avoir besoin d'un environnement Python préconfiguré », indique le fournisseur. « Ce script de reconnaissance de réseau contient un commentaire codé en dur en russe qui dit « # не на linux маска в hex формате », ce qui signifie « not on linux mask in hex format » (pas sur le masque linux au format hexagonal). Ce commentaire peut nous éclairer sur l'origine de l'acteur de la menace ». Dans le cadre de cet exploit, les pirates ont aussi été en mesure via des scripts spécifiques de créer des comptes utilisateurs sur le système compromis intégrés dans des groupes « Utilisateurs de bureau à distance » et « Administrateurs », et de modifier le registre Windows pour autoriser les connexions au bureau à distance et paramétrer le pare-feu de l'OS.

Un autre script Python tire aussi parti de la programmation asynchrone grâce au module Python asyncio. « Ce script est conçu pour faciliter la fonctionnalité asynchrone de ping, en envoyant des demandes d'écho ICMP à une adresse hôte désignée. L'objectif principal de cette opération est d'évaluer les temps d'aller-retour et de s'assurer de l'accessibilité de l'hôte cible. Entre les mains de l'attaquant, ce script constitue une ressource précieuse pour comprendre la configuration du réseau compromis. Son utilisation s'étend à l'identification des actifs accessibles au sein du réseau, ouvrant potentiellement la voie à un mouvement latéral au sein de l'environnement compromis », fait savoir Security Joes qui alerte sur une possible extension du vecteur d'intrusion pour d'autres attaques éventuelles : « bien que la porte dérobée utilisée par l'acteur de la menace au cours de l'intrusion s'appuie sur l'exploitation de MinIO et ne nécessite pas de script PHP externe pour son exécution, il est impératif de souligner la gamme d'outils à la disposition de l'acteur de la menace. Ces outils peuvent potentiellement être utilisés pour compromettre d'autres environnements qui n'ont pas nécessairement de lien direct avec MinIO. Cette observation met en évidence la polyvalence de l'acteur de la menace et souligne la nécessité d'un dispositif de sécurité complet qui reste vigilant à l'égard des différents vecteurs d'attaque ».