2 bugs de Salt permettent des exécutions de code à distance

Le framework open source Salt contient des failles de sécurité qui permettent l’exécution complète de code à distance en tant que root sur les serveurs dans les centres de données et les environnements cloud. Des attaques sont attendues prochainement.

Selon les chercheurs de F-Secure, le framework, créé par la société SaltStack mais également utilisé comme outil de configuration open source pour surveiller et mettre à jour l’état des serveurs, est affecté par 2 failles dans son protocole de communication par défaut, connu sous le nom de ZeroMQ.

salt saltstack

La faille identifiée comme CVE-2020-11651 est une faille de contournement d’authentification, tandis que CVE-2020-11652 est une faille de traversée de répertoire où les entrées non fiables (c’est-à-dire les paramètres dans les requêtes sur le réseau) ne sont pas correctement assainies. Les chercheurs ont découvert que cela permet d’accéder à l’ensemble du système de fichiers du serveur maître.

Les failles sont particulièrement dangereuses compte tenu de la topographie du framework Salt.

«Chaque serveur [géré par Salt] exécute un agent appelé «minion», qui se connecte à un «maître», a expliqué F-Secure, dans un article. “[Un maître est une] installation Salt qui collecte les rapports d’état des serviteurs et publie des messages de mise à jour sur lesquels les serviteurs peuvent agir.”

Ces messages de mise à jour sont généralement utilisés pour modifier la configuration d’une sélection de serveurs, mais ils peuvent également être utilisés pour envoyer des commandes à plusieurs, voire à tout, les systèmes gérés, selon les chercheurs. Un pirate peut ainsi compromettre le maître afin d’envoyer des commandes malveillantes à tout les autres serveurs du cluster.

Défaillances dans le protocole

Pour communiquer, le maître utilise deux canaux ZeroMQ. Comme l’explique F-Secure, l’un est un «serveur de requêtes» où les serviteurs peuvent se connecter pour signaler leur état (ou la sortie des commandes). L’autre est un «serveur de publication» où le maître publie des messages auxquels les serviteurs peuvent se connecter et s’abonner.

Le contournement de l’authentification peut être obtenu car la classe ClearFuncs traite les demandes non authentifiées et expose involontairement le «_send_pub ()». Il s’agit de la méthode utilisée pour mettre en file d’attente les messages du serveur de publication maître vers les serviteurs – et peut donc être utilisée pour envoyer des commandes arbitraires. Ces messages peuvent être utilisés pour déclencher des serviteurs et exécuter des commandes arbitraires en tant que root.

De plus, «la classe ClearFuncs expose également la méthode _prep_auth_info(), qui retourne la clé racine utilisée pour authentifier les commandes de l’utilisateur racine local sur le serveur maître. Cette clé racine peut ensuite être utilisée pour appeler à distance des commandes d’administration sur le serveur maître. Cette exposition involontaire fournit à un attaquant distant non authentifié un accès root équivalent au maître de sel.»

Comme pour la traversée de répertoire, le module «wheel» contient des commandes utilisées pour lire et écrire des fichiers sous des chemins de répertoire spécifiques.

“Les entrées de ces fonctions sont concaténées avec le répertoire cible et le chemin résultant n’est pas canonisé, conduisant à un échappement de la restriction de chemin prévue”, selon le document. «La méthode get_token() de la classe salt.tokens.localfs (qui est exposée à des requêtes non authentifiées par la classe ClearFuncs) ne parvient pas à filtrer le paramètre d’entrée de jeton qui est ensuite utilisé comme nom de fichier, permettant la lecture de fichiers en dehors du répertoire prévu. “

L’association des failles permettent aux attaquants qui peuvent se connecter au port du serveur de requête de contourner tous les contrôles d’authentification et d’autorisation, de publier des messages de contrôle arbitraires, de lire et d’écrire des fichiers n’importe où sur le système de fichiers du serveur maître et de voler la clé secrète utilisée pour s’authentifier auprès du maître en tant que root.

Selon la National Vulnerability Database, «la classe ClearFuncs du processus salt-master ne valide pas correctement les appels de méthode. Cela permet à un utilisateur distant d’accéder à certaines méthodes sans authentification. Ces méthodes peuvent être utilisées pour récupérer des jetons d’utilisateur depuis le maître de sel et/ou exécuter des commandes arbitraires sur des minions.»

Des exploits de Salt en moins d’un jour

F-Secure a déclaré s’attendre à voir très prochainement des attaques dans la nature.

“Nous nous attendons à ce que tout pirate compétent puisse créer des exploits 100% fiables pour ces failles en moins de 24 heures”, ont déclaré les chercheurs, citant la “fiabilité et la simplicité” de l’exploitation.

Malheureusement, la firme a également déclaré qu’une analyse préliminaire avait révélé plus de 6 000 instances de Salt potentiellement vulnérables exposées au public sur Internet.

salt saltstack

Les correctifs sont disponibles dans la version 3000.2. En outre, «l’ajout de contrôles de sécurité réseau qui restreignent l’accès du maître de sel aux serviteurs connus (les ports 4505 et 4506 étant les valeurs par défaut), ou du moins bloquent la connexion Internet, serait également une solution car les contrôles d’authentification et d’autorisation fournis par Salt ne sont pas actuellement suffisamment robuste pour être exposé à des réseaux hostiles », a conclu F-Secure.

Pour détecter une compromission il suffit de vérifier si les chaînes ASCII «_prep_auth_info» ou «_send_pub» s’affichent dans les données de port du serveur de requête (port 4506 par défaut).

Toujours sur le plan de la détection, «les messages publiés aux serviteurs sont appelés «jobs» et seront enregistrés sur le maître (chemin par défaut /var/cache/salt/master/jobs/). Ces tâches enregistrées peuvent être auditées pour détecter des contenus malveillants ou des identifiants de tâches («jids») qui sortent de l’ordinaire », a noté F-Secure.

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