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 |