Détails de la vulnérabilité critique dans Exim révélés

Publié version corrective Exim 4.92.2 avec l'élimination des critiques vulnérabilités (CVE-2019-15846), ce qui dans la configuration par défaut peut conduire à l'exécution de code à distance par un attaquant disposant des privilèges root. Le problème n'apparaît que lorsque la prise en charge de TLS est activée et est exploitée en transmettant un certificat client spécialement conçu ou une valeur modifiée à SNI. Vulnérabilité identifié par Qualys.

problème présent dans le gestionnaire pour échapper les caractères spéciaux dans la chaîne (string_interpret_escape() de string.c) et est provoqué par le caractère '\' à la fin de la chaîne interprété avant le caractère nul ('\0') et son échappement. Lors de l'échappement, la séquence '\' et le code de fin de ligne nul suivant sont traités comme un seul caractère et le pointeur est déplacé vers les données en dehors de la ligne, qui sont traitées comme une continuation de la ligne.

Le code appelant string_interpret_escape() alloue un tampon pour le drain en fonction de la taille réelle, et le pointeur exposé se retrouve dans une zone en dehors des limites du tampon. Par conséquent, lorsque vous essayez de traiter une chaîne d'entrée, une situation se produit lors de la lecture de données à partir d'une zone en dehors des limites du tampon alloué, et une tentative d'écriture d'une chaîne non échappée peut conduire à une écriture au-delà des limites du tampon.

Dans la configuration par défaut, la vulnérabilité peut être exploitée en envoyant des données spécialement conçues à SNI lors de l'établissement d'une connexion sécurisée au serveur. Le problème peut également être exploité en modifiant les valeurs peerdn dans les configurations configurées pour l'authentification des certificats clients ou lors de l'importation de certificats. L'attaque via SNI et peerdn est possible à partir de la version Exim 4.80, dans lequel la fonction string_unprinting() a été utilisée pour annuler l'impression du contenu peerdn et SNI.

Un prototype d'exploit a été préparé pour une attaque via SNI, fonctionnant sur les architectures i386 et amd64 sur les systèmes Linux avec Glibc. L'exploit utilise la superposition de données sur la zone de tas, ce qui entraîne l'écrasement de la mémoire dans laquelle le nom du fichier journal est stocké. Le nom du fichier est remplacé par "/../../../../../../../../etc/passwd". Ensuite, la variable avec l'adresse de l'expéditeur est écrasée, qui est d'abord enregistrée dans le journal, ce qui vous permet d'ajouter un nouvel utilisateur au système.

Mises à jour de packages avec correctifs de vulnérabilités publiés par les distributions Debian, Ubuntu, Fedora, SUSE / openSUSE и FreeBSD. Problème RHEL et CentOS non sensible, puisque Exim n'est pas inclus dans leur référentiel de packages habituel (dans CHALEUREUSE обновление déjà formémais pour l'instant pas placé vers un référentiel public). Dans le code Exim, le problème est résolu avec une seule ligne correctif, qui désactive l'effet d'échappement de la barre oblique inverse si elle se trouve à la fin de la ligne.

Pour contourner la vulnérabilité, vous pouvez désactiver la prise en charge de TLS ou ajouter
Section ACL « acl_smtp_mail » :

condition de refus = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
condition de refus = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Source: opennet.ru

Ajouter un commentaire