Vulnérabilités dans les serveurs courriel Exim

Date de publication :

CVE-2020-28007 [Score CVSS v3 : 7.8] 
Exim fonctionne en tant que root dans son répertoire log, qui appartient à l'utilisateur "exim".
Un attaquant ayant obtenu les privilèges de l'utilisateur "exim" (en exploitant le CVE-2020-28020 ou le CVE-2020-28018 par exemple) peut exploiter cette vulnérabilité locale pour obtenir les privilèges complets de l'utilisateur root.

CVE-2020-28008 [Score CVSS v3 : 7.8] 
Exim fonctionne également en tant que root dans son répertoire spool, qui appartient à l'utilisateur "exim".
Un attaquant ayant obtenu les privilèges de l'utilisateur "exim" peut exploiter cette vulnérabilité locale pour obtenir les privilèges complets de root.

CVE-2020-28014 [Score CVSS v3 : 6.1] 
Un attaquant ayant obtenu les privilèges de l'utilisateur "exim" peut abuser de l'option -oP override_pid_file_path pour créer (ou écraser) un fichier arbitraire, en tant que root.
L'attaquant peut également combiner cette vulnérabilité avec CVE-2020-28007 ou CVE-2020-28008 pour créer un fichier arbitraire avec un contenu arbitraire et obtenir les privilèges complets de root.

CVE-2021-27216 [Score CVSS v3 : 6.3] 
N'importe quel utilisateur local peut supprimer n'importe quel fichier arbitraire en tant que root (par exemple, /etc/passwd), en abusant des options -oP et -oPX dans delete_pid_file().
Pour exploiter cette vulnérabilité, un attaquant local doit gagner une condition de course entre le fopen() à la ligne 939 et le unlink() à la ligne 944 du code source d’Exim.

CVE-2020-28011 [Score CVSS v3 : 7.8] 
Grâce aux options -R deliver_selectstring et -S deliver_selectstring_sender, l'utilisateur "exim" peut faire déborder le tas mémoire big_buffer basé dans queue_run().
Cette faille peut permettre à un attaquant local authentifié en tant qu’utilisateur exim d'obtenir les privilèges racines.

CVE-2020-28010 [Score CVSS v3 : 7.8] 
Pour des raisons de débogage et de tracabilité, Exim copie le répertoire de travail actuel (initial_cwd) dans le tas mémoire big_buffer.
Le strncpy() à la ligne 3952 du code source d’Exim ne peut pas dépasser big_buffer, mais initial_cwd peut être beaucoup plus long que big_buffer_size (16KB). Cela peut provoquer une condition d’’écriture hors limite.
Cette faille peut permettre à un attaquant local non privilégié d'obtenir les privilèges racines.

CVE-2020-28013 [Score CVSS v3 : 7.8] 
Si un attaquant local exécute Exim avec une option -F '.(', la fonction parse_fix_phrase() appelle strncpy() avec une taille de -1 (ce qui fait déborder le tampon de tampon de destination, car strncpy(dest, src, n) "écrit des octets nuls supplémentaires.
Cette faille peut permettre à un attaquant local non privilégié d'obtenir les privilèges racines.

CVE-2020-28016 [Score CVSS v3 : 7.8] 
Si un attaquant local exécute Exim avec un originator_name vide (-F ''), alors parse_fix_phrase() alloue un tampon de taille nulle et écrit un octet nul dans le tampon. Cette faille peut permettre à un attaquant local non privilégié d'obtenir les privilèges racines.

CVE-2020-28015 [Score CVSS v3 : 7.8] 
Lorsqu'Exim reçoit un courrier, il crée deux fichiers dans le sous-répertoire "input" de son répertoire spool : un fichier "data", qui contient le corps du courrier, et un fichier "header", qui contient les en-têtes du courrier et des métadonnées importantes (les adresses de l'expéditeur et du destinataire, par exemple). Un tel fichier d'en-tête est constitué de lignes de texte séparées par des caractères '\n'. 
Un attaquant local non privilégié peut être en mesure d’envoyer un courrier à un destinataire dont l'adresse contient des caractères '\n', et peut donc injecter de nouvelles lignes dans le fichier d'en-tête du spool et modifier le comportement d'Exim.

CVE-2020-28020 [Score CVSS v3 : 9.8] 
Cette vulnérabilité peut permettre à un attaquant distant et non authentifié d'exécuter des commandes arbitraires en tant qu'utilisateur "exim". 

CVE-2020-28021 [Score CVSS v3 : 8.8] 
Un client SMTP authentifié peut ajouter un paramètre AUTH= à sa commande MAIL FROM. Ce paramètre AUTH= est décodé par auth_xtextdecode().
La variable authenticated_sender peut contenir des caractères arbitraires, car auth_xtextdecode() traduit les séquences hexadécimales +XY en caractères équivalents (par exemple, +0A en '\n') : un attaquant distant authentifié peut injecter de nouvelles lignes dans le fichier d'en-tête du spool et exécuter des commandes arbitraires, en tant que root.
Cette vulnérabilité est particulièrement problématique pour les fournisseurs de services Internet et les fournisseurs de messagerie qui déploient Exim et proposent des comptes de messagerie mais pas de comptes shell. Elle est également problématique lorsqu'elle est combinée avec un contournement d'authentification tel que CVE-2020-12783.

CVE-2020-28022 [Score CVSS v3 : 9.8] 
Les paramètres name=value tels que AUTH= sont extraits des commandes MAIL FROM et RCPT TO par extract_option().
Cette vulnérabilité peut permettre à un attaquant distant et non authentifié d'exécuter des commandes arbitraires en tant qu'utilisateur "exim".

CVE-2020-28026 [Score CVSS v3 : 9.8] 
La fonction spool_read_header() appelle fgets() pour lire les lignes d'un fichier d'en-tête spool dans le tas mémoire big_buffer de 16KB. La première section de spool_read_header() agrandit dynamiquement big_buffer si fgets() tronque une ligne (si une ligne est plus longue que 16KB).
Cette vulnérabilité peut permettre à un attaquant distant et non authentifié d'exécuter des commandes arbitraires en tant que root (si le DSN est activé).

CVE-2020-28018 [Score CVSS v3 : 9.8] 
Si Exim est utilisé avec OpenSSL, et si STARTTLS et PIPELINING sont activés (configuration par défaut), et si X_PIPE_CONNECT est désactivé (par défaut avant Exim 4.94), alors la fonction tls_write() au sein du fichier tls-openssl.c est vulnérable à un use-after-free.

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques

Risques

  • Elévation de privilèges
  • Exécution de code arbitraire
  • Violation des politiques de sécurité

Criticité

  • Score CVSS v3 :  9.8 max

Existence d’un code d’exploitation

 

 

Composants vulnérables

  • Les versions d’Exim 4.94.1 et antérieures sont impactées par ces vulnérabilités.

CVE

Solutions ou recommandations

Mise en place de correctifs de sécurité

Mettre à jour Exim vers la version suivante :

  • 4.92.2

Solution de contournement

  • Aucune solution de contournement n’est disponible publiquement à l’heure actuelle.