21 vulnérabilités critiques affectent des millions de serveurs de messagerie Exim

21Nails

L’équipe de recherche du spécialiste de la sécurité Qualys a découvert pas moins de 21 vulnérabilités critiques dans le serveur de messagerie Exim, nommées 21Nails, jeu de mots sur les messages et les clous. En en combinant certaines, on peut obtenir les privilèges pour l’exécution de tout code à distance, et le privilège le plus élevé, root.

Dans ces conditions, il est recommandé d’installer les correctifs de sécurité dans les plus brefs délais.

L’annonce fait l’objet de l’alerte du CERT-FR: CERTFR-2021-ALE-008.

Exim est un serveur de messagerie (Mail transfer agents, agents de transfert de message) populaire pour les systèmes d’exploitation de type Unix. On estime que 60 % des serveurs internet tournent sous Exim, et 4 millions de serveurs seraient exposés…

Qualys a audité le code source d’Exim à l’automne dernier et découvert 21 vulnérabilités de sécurité. Dix d’entre elles peuvent être exploitées à distance. Certaines permettent d’obtenir un accès root au système distant. 11 sont exploitables localement, soit dans une configuration par défaut, soit dans une configuration typique.

La plupart des vulnérabilités affectent toutes les versions d’Exim depuis 2004…

Exim fut informé en toute confidentialité le 28 puis le 29 octobre 2020. Exim et Qualys travaillèrent sur les correctifs de sécurité, et s’accordèrent sur une date de divulgation des vulnérabilités.

Preuve de concept

Qualys a publié une preuve de concept sous forme de vidéo.

 

Liste des vulnérabilités

CVE Description Type
CVE-2020-28007 Link attack in Exim’s log directory Local
CVE-2020-28008 Assorted attacks in Exim’s spool directory Local
CVE-2020-28014 Arbitrary file creation and clobbering Local
CVE-2021-27216 Arbitrary file deletion Local
CVE-2020-28011 Heap buffer overflow in queue_run() Local
CVE-2020-28010 Heap out-of-bounds write in main() Local
CVE-2020-28013 Heap buffer overflow in parse_fix_phrase() Local
CVE-2020-28016 Heap out-of-bounds write in parse_fix_phrase() Local
CVE-2020-28015 New-line injection into spool header file (local) Local
CVE-2020-28012 Missing close-on-exec flag for privileged pipe Local
CVE-2020-28009 Integer overflow in get_stdinput() Local
CVE-2020-28017 Integer overflow in receive_add_recipient() Remote
CVE-2020-28020 Integer overflow in receive_msg() Remote
CVE-2020-28023 Out-of-bounds read in smtp_setup_msg() Remote
CVE-2020-28021 New-line injection into spool header file (remote) Remote
CVE-2020-28022 Heap out-of-bounds read and write in extract_option() Remote
CVE-2020-28026 Line truncation and injection in spool_read_header() Remote
CVE-2020-28019 Failure to reset function pointer after BDAT error Remote
CVE-2020-28024 Heap buffer underflow in smtp_ungetc() Remote
CVE-2020-28018 Use-after-free in tls-openssl.c Remote
CVE-2020-28025 Heap out-of-bounds read in pdkim_finish_bodyhash() Remote