La mise à jour Exim 4.94.2 corrige 10 vulnérabilités exploitables à distance

La version du serveur de messagerie Exim 4.94.2 a été publiée avec l'élimination de 21 vulnérabilités (CVE-2020-28007-CVE-2020-28026, CVE-2021-27216), qui ont été identifiées par Qualys et présentées sous le nom de code 21Ongles. 10 problèmes peuvent être exploités à distance (y compris l'exécution de code avec les droits root) grâce à la manipulation des commandes SMTP lors de l'interaction avec le serveur.

Toutes les versions d'Exim, dont l'historique est suivi dans Git depuis 2004, sont concernées par le problème. Des prototypes fonctionnels d'exploits ont été préparés pour 4 vulnérabilités locales et 3 problèmes distants. Les exploits pour les vulnérabilités locales (CVE-2020-28007, CVE-2020-28008, CVE-2020-28015, CVE-2020-28012) vous permettent d'élever vos privilèges au niveau de l'utilisateur root. Deux problèmes distants (CVE-2020-28020, CVE-2020-28018) permettent d'exécuter du code sans authentification en tant qu'utilisateur Exim (vous pouvez alors obtenir un accès root en exploitant l'une des vulnérabilités locales).

La vulnérabilité CVE-2020-28021 permet l'exécution immédiate de code à distance avec les droits root, mais nécessite un accès authentifié (l'utilisateur doit établir une session authentifiée, après quoi il peut exploiter la vulnérabilité en manipulant le paramètre AUTH dans la commande MAIL FROM). Le problème est dû au fait qu'un attaquant peut réaliser une substitution de chaîne dans l'en-tête d'un fichier spool en écrivant la valeur Authenticated_sender sans échapper correctement les caractères spéciaux (par exemple, en passant la commande « MAIL FROM:<> AUTH=Raven+0AReyes »).

De plus, il est à noter qu'une autre vulnérabilité distante, CVE-2020-28017, est exploitable pour exécuter du code avec les droits d'utilisateur « exim » sans authentification, mais nécessite plus de 25 Go de mémoire. Pour les 13 vulnérabilités restantes, des exploits pourraient également être préparés, mais des travaux dans ce sens n'ont pas encore été réalisés.

Les développeurs d'Exim ont été informés des problèmes en octobre de l'année dernière et ont passé plus de 6 mois à développer des correctifs. Il est recommandé à tous les administrateurs de mettre à jour en urgence Exim sur leurs serveurs de messagerie vers la version 4.94.2. Toutes les versions d'Exim antérieures à la version 4.94.2 ont été déclarées obsolètes. La publication de la nouvelle version a été coordonnée avec les distributions qui publiaient simultanément des mises à jour de packages : Ubuntu, Arch Linux, FreeBSD, Debian, SUSE et Fedora. RHEL et CentOS ne sont pas concernés par le problème, puisque Exim n'est pas inclus dans leur référentiel de packages standard (EPEL n'a pas encore de mise à jour).

Vulnérabilités supprimées :

  • CVE-2020-28017 : Dépassement d'entier dans la fonction recevoir_add_recipient() ;
  • CVE-2020-28020 : Dépassement d'entier dans la fonction recevoir_msg() ;
  • CVE-2020-28023 : lecture hors limites dans smtp_setup_msg();
  • CVE-2020-28021 : Substitution de nouvelle ligne dans l'en-tête du fichier spool ;
  • CVE-2020-28022 : Écrire et lire dans une zone en dehors du tampon alloué dans la fonction extract_option() ;
  • CVE-2020-28026 : troncature et substitution de chaîne dans spool_read_header();
  • CVE-2020-28019 : Crash lors de la réinitialisation d'un pointeur de fonction après une erreur BDAT ;
  • CVE-2020-28024 : dépassement de tampon dans la fonction smtp_ungetc() ;
  • CVE-2020-28018 : accès au tampon d'utilisation après libération dans tls-openssl.c
  • CVE-2020-28025 : Une lecture hors limites dans la fonction pdkim_finish_bodyhash().

Vulnérabilités locales :

  • CVE-2020-28007 : Attaque de lien symbolique dans le répertoire des journaux Exim ;
  • CVE-2020-28008 : Attaques du répertoire spool ;
  • CVE-2020-28014 : Création arbitraire de fichiers ;
  • CVE-2021-27216 : Suppression arbitraire de fichiers ;
  • CVE-2020-28011 : Débordement de tampon dans queue_run();
  • CVE-2020-28010 : écriture hors limites dans main();
  • CVE-2020-28013 : Débordement de tampon dans la fonction parse_fix_phrase();
  • CVE-2020-28016 : écriture hors limites dans parse_fix_phrase();
  • CVE-2020-28015 : Substitution de nouvelle ligne dans l'en-tête du fichier spool ;
  • CVE-2020-28012 : indicateur de fermeture lors de l'exécution manquant pour un canal privilégié sans nom ;
  • CVE-2020-28009 : Dépassement d'entier dans la fonction get_stdinput().



Source: opennet.ru

Ajouter un commentaire