Vulnérabilités dans OpenSMTPD qui permettent un accès root à distance et local

Société Qualys révélé une autre vulnérabilité critique à distance (CVE-2020-8794) dans le serveur de messagerie OuvrirSMTPD, développé par le projet OpenBSD. Comme celui identifié fin janvier vulnérabilité, un nouveau problème permet d'exécuter à distance des commandes shell arbitraires sur un serveur avec les droits d'utilisateur root. Vulnérabilité éliminé en cause OuvrirSMTPD 6.6.4p1.

Le problème est dû à un bug dans le code qui distribue le courrier au serveur de messagerie distant (et non dans le code qui gère les connexions entrantes). L’attaque est possible aussi bien côté client que côté serveur. Côté client, l'attaque est possible dans la configuration par défaut d'OpenSMTPD, dans laquelle OpenSMTPD accepte les requêtes uniquement sur l'interface réseau interne (localhost) et envoie des messages électroniques à des serveurs externes. Pour exploiter la vulnérabilité, il suffit que, lors de l'envoi d'un courrier, OpenSMTPD établisse une session avec un serveur de messagerie contrôlé par l'attaquant, ou que l'attaquant puisse s'introduire dans la connexion client (MITM ou redirection lors d'attaques via DNS ou BGP). ).

Pour une attaque côté serveur, OpenSMTPD doit être configuré pour recevoir des requêtes réseau externes provenant d'autres serveurs de messagerie ou servir des services tiers qui vous permettent d'envoyer une requête à un e-mail arbitraire (par exemple, des formulaires de confirmation d'adresse sur des sites Web). Par exemple, un attaquant peut se connecter au serveur OpenSMTPD et envoyer une lettre incorrecte (à un utilisateur inexistant), ce qui entraînera une réponse envoyant une lettre avec un code d'erreur (rebond) au serveur de l'attaquant. Un attaquant peut exploiter la vulnérabilité lorsqu'OpenSMTPD se connecte pour envoyer une notification au serveur de l'attaquant. Les commandes shell injectées lors de l'attaque sont placées dans un fichier qui est exécuté avec les droits root au redémarrage d'OpenSMTPD, l'attaquant doit donc attendre le redémarrage d'OpenSMTPD ou lancer un crash d'OpenSMTPD pour terminer l'attaque.

Le problème est présent dans la fonction mta_io() dans le code d'analyse de la réponse multiligne renvoyée par le serveur distant après l'établissement d'une connexion (par exemple, "250-ENHANCEDSTATUSCODES" et "250 HELP"). OpenSMTPD calcule que la première ligne comprend un nombre à trois chiffres et un texte séparés par un caractère « - », et que la deuxième ligne contient un nombre à trois chiffres et un texte séparés par un espace. Si un nombre à trois chiffres n'est pas suivi d'un espace et d'un texte dans la deuxième ligne, le pointeur utilisé pour définir le texte est placé sur l'octet suivant le caractère '\0' et une tentative est effectuée pour copier les données après la fin. de la ligne dans le tampon.

À la demande du projet OpenBSD, la publication des détails sur l'exploitation de la vulnérabilité a été retardée jusqu'au 26 février pour permettre aux utilisateurs de mettre à jour leurs systèmes. Le problème est présent dans la base de code depuis décembre 2015, mais l'exploitation avant exécution du code avec les privilèges root est possible depuis mai 2018. Les chercheurs ont préparé un prototype fonctionnel de l'exploit, qui a été testé avec succès dans les versions OpenSMTPD pour OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (tests) et Fedora 31.

Dans OpenSMTPD également identifié Une autre vulnérabilité (CVE-2020-8793) qui permet à un utilisateur local de lire la première ligne de n'importe quel fichier du système. Par exemple, vous pouvez lire la première ligne de /etc/master.passwd, qui contient le hachage du mot de passe de l'utilisateur root. La vulnérabilité vous permet également de lire l'intégralité du contenu d'un fichier appartenant à un autre utilisateur si ce fichier se trouve dans le même système de fichiers que le répertoire /var/spool/smtpd/. Le problème n'est pas exploitable sur de nombreuses distributions Linux où la valeur de /proc/sys/fs/protected_hardlinks est définie sur 1.

Le problème est une conséquence d'une élimination incomplète проблем, exprimé lors de l’audit réalisé par Qualys en 2015. Un attaquant peut obtenir l'exécution de son code avec les droits du groupe « _smtpq » en paramétrant la variable « PATH=. ». et en plaçant un script appelé makemap dans le répertoire courant (l'utilitaire smtpctl exécute makemap sans spécifier explicitement le chemin). En accédant au groupe "_smtpq", l'attaquant peut alors provoquer une situation de concurrence critique (créer un gros fichier dans le répertoire hors ligne et envoyer un signal SIGSTOP) et, avant la fin du traitement, remplacer le fichier dans le répertoire hors ligne par un fichier dur. lien symbolique pointant vers le fichier cible dont le contenu doit être lu.

Il est à noter que dans Fedora 31, la vulnérabilité vous permet d'obtenir immédiatement les privilèges du groupe racine, puisque le processus smtpctl est équipé de l'indicateur racine setgid, au lieu de l'indicateur setgid smtpq. En accédant au groupe racine, vous pouvez écraser le contenu de /var/lib/sss/mc/passwd et obtenir un accès root complet au système.

Source: opennet.ru

Ajouter un commentaire