version corrective avec correction d'une issue critique (), qui dans la configuration par défaut peut permettre l'exécution de code à distance par un attaquant avec des droits root. Le problÚme se manifeste uniquement lorsque le support TLS est activé et est exploité via l'envoi d'un certificat client spécialement formé ou d'une valeur modifiée dans le SNI. La vulnérabilité a été signalée par Qualys.
Le problĂšme dans le gestionnaire d'Ă©chappement des caractĂšres spĂ©ciaux dans la chaĂźne ( depuis string.c) et est causĂ©e par le fait que le caractĂšre â\â Ă la fin de la chaĂźne est interprĂ©tĂ© avant le caractĂšre nul (â\0â) et lâĂ©chappe. Lors de l'Ă©chappement, la sĂ©quence â\â et le code nul suivant Ă la fin de la chaĂźne sont traitĂ©s comme un seul caractĂšre et le pointeur est dĂ©placĂ© vers des donnĂ©es en dehors de la chaĂźne, qui sont traitĂ©es comme sa continuation.
Le code appelant string_interpret_escape() alloue un tampon sous le flux, basé sur la taille réelle, et le pointeur se retrouve dans une zone en dehors des limites du tampon. Par conséquent, lors du traitement de la chaßne d'entrée, une situation de lecture de données en dehors des limites du tampon alloué se produit, et la tentative d'écriture de la chaßne déséchappée peut entraßner une écriture au-delà du tampon.
Dans la configuration par dĂ©faut, la vulnĂ©rabilitĂ© peut ĂȘtre exploitĂ©e via l'envoi de donnĂ©es spĂ©cialement formĂ©es dans le 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 rĂ©glĂ©es pour l'authentification par certificat client, ou lors de l'importation de certificats. L'attaque via SNI et peerdn est possible Ă partir de la version , oĂč la fonction string_unprinting() a Ă©tĂ© utilisĂ©e pour dĂ©sĂ©chapper le contenu de peerdn et SNI.
Un prototype d'exploit pour l'attaque via SNI a Ă©tĂ© prĂ©parĂ©, fonctionnant sur des architectures i386 et amd64 dans des systĂšmes Linux avec Glibc. L'exploit utilise le chevauchement de donnĂ©es sur la zone de tas, entraĂźnant la réécriture de la mĂ©moire oĂč est stockĂ© le nom du fichier journal. Le nom du fichier est remplacĂ© par «/..../..../..../..../..../..../..../..../etc/passwd». Ensuite, la variable avec l'adresse de l'expĂ©diteur, qui est d'abord enregistrĂ©e dans le journal, est réécrite, permettant d'ajouter un nouvel utilisateur au systĂšme.
Des mises à jour de paquets corrigeant la vulnérabilité ont été publiées par les distributions , , , et . RHEL et CentOS concernant ce problÚme. , car Exim n'est pas inclus dans leur dépÎt de packages standard (dans une mise à jour , mais pour l'instant dans le dépÎt public). Dans le code d'Exim, le problÚme est corrigé par une ligne de code , qui désactive l'effet d'échappement du backslash s'il se trouve à la fin de la ligne.
Comme solution de contournement pour bloquer la vulnĂ©rabilitĂ©, il est possible de dĂ©sactiver la prise en charge de TLS ou d'ajouter Ă
la section ACL «acl_smtp_mail»:
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
Source : opennet.ru
