Vulnérabilité critique dans Exim qui permet d'exécuter du code sur le serveur avec les privilèges root

Dans le serveur de messagerie Exim identifié critique vulnérabilité (CVE-2019-10149), ce qui peut conduire à l'exécution de code à distance sur le serveur disposant des droits root lors du traitement d'une requête spécialement conçue. La possibilité d'exploitation du problème a été constatée dans les versions de 4.87 à 4.91 inclus ou lors de la construction avec l'option EXPERIMENTAL_EVENT.

Dans la configuration par défaut, l'attaque peut être effectuée sans complications inutiles par un utilisateur local, puisque l'ACL "verify = destinataire" est appliquée, qui effectue des vérifications supplémentaires pour les adresses externes. Une attaque à distance peut se produire lorsque les paramètres sont modifiés, par exemple en agissant en tant que MX secondaire pour un autre domaine, en supprimant l'ACL "verify=recipient" ou en modifiant certaines modifications apportées à local_part_suffix). Une attaque à distance est également possible si l'attaquant parvient à maintenir la connexion au serveur ouverte pendant 7 jours (par exemple, en envoyant un octet par minute pour contourner un timeout). Dans le même temps, il est possible qu’il existe des vecteurs d’attaque plus simples pour exploiter le problème à distance.

La vulnérabilité est causée par une vérification incorrecte de l'adresse du destinataire dans la fonction Deliver_message() définie dans le fichier /src/deliver.c. En manipulant le formatage de l'adresse, un attaquant peut parvenir à substituer ses données dans les arguments d'une commande appelée via la fonction execv() avec les droits root. Le fonctionnement ne nécessite pas l'utilisation de techniques complexes utilisées pour les débordements de tampon ou la corruption de la mémoire ; une simple substitution de caractères est suffisante.

Le problème est lié à l'utilisation de la construction pour la conversion d'adresse :

Deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->address));
livrer_domaine = expand_string(
string_sprintf("${domaine:%s}", nouveau->adresse));

La fonction expand_string() est un combineur trop compliqué, incluant la reconnaissance de la commande « ${run{command arguments} », qui conduit au lancement d'un gestionnaire externe. Ainsi, pour attaquer au sein d'une session SMTP, il suffit à un utilisateur local d'envoyer une commande du type 'RCPT TO “username+${run{...}}@localhost”', où localhost est l'un des hôtes de la liste local_domains, et le nom d'utilisateur est le nom d'un utilisateur local existant.

Si le serveur fonctionne comme un relais de messagerie, il suffit d'envoyer à distance la commande 'RCPT TO "${run{...}}@relaydomain.com"', où relaydomain.com est l'un des hôtes répertoriés dans relay_to_domains. section des paramètres. Étant donné qu'Exim ne supprime pas par défaut le mode privilège (deliver_drop_privilege = false), les commandes passées via "${run{...}}" seront exécutées en tant que root.

Il est à noter que la vulnérabilité était éliminé dans la version 4.92 publiée en février, sans souligner que le correctif pourrait entraîner des problèmes de sécurité. Il n'y a aucune raison de croire qu'il y a eu une dissimulation délibérée de la vulnérabilité par les développeurs d'Exim, puisque le problème a été résolu lors de corrections panne qui se produit lorsque des adresses incorrectes sont transmises, et la vulnérabilité a été identifiée par Qualys lors d'un audit des modifications dans Exim.

Un correctif pour les versions précédentes qui continuent à être utilisées dans les distributions n'est actuellement disponible que sous forme de correctif. Des versions correctives pour les branches précédentes afin de résoudre le problème sont prévues pour le 11 juin. Les mises à jour des packages sont prêtes pour Debian, Ubuntu, openSUSE. Arch Linux и Fedora Ils fournissent la version 4.92, dans laquelle le problème n'apparaît pas. Problème RHEL et CentOS non sensible, car Exim n'est pas inclus dans leur référentiel de packages habituel.

Source: opennet.ru

Ajouter un commentaire