En bref

  • CVE-2026-45185 Dead.Letter (CVSS 9.8 Critical) : use-after-free dans le serveur mail Exim lors du parsing BDAT sur connexions TLS GnuTLS
  • Systèmes affectés : Exim versions 4.97 à 4.99.2 compilées avec GnuTLS (USE_GNUTLS=yes) — les builds OpenSSL ne sont pas concernées
  • Action urgente : mettre à jour vers Exim 4.99.3 immédiatement — aucune mitigation alternative disponible, le patch est la seule protection

Les faits

La CVE-2026-45185, baptisée Dead.Letter par son découvreur, est une vulnérabilité critique de type use-after-free affectant le populaire serveur de messagerie Exim. Scorée CVSS v3.1 à 9.8 sur 10 (Critical), elle permet à un attaquant non authentifié d'exécuter du code arbitraire à distance sur tout serveur tournant Exim 4.97 à 4.99.2 compilé avec le backend GnuTLS. La faille a été découverte et reportée le 1er mai 2026 par Federico Kirschbaum de la plateforme de test autonome XBOW, et le patch d'urgence a été publié sous la forme d'Exim 4.99.3.

Le vecteur CVSS est particulièrement sévère : AV:N (réseau), AC:L (complexité faible), PR:N (aucun privilège), UI:N (aucune interaction utilisateur), S:U, C:H/I:H/A:H — impact total sur les trois piliers CIA. La combinaison réseau + complexité nulle + zéro privilège signifie que tout attaquant ayant accès TCP au port 25 (SMTP) d'un serveur Exim vulnérable peut déclencher l'exploit. Il n'existe aucun pré-requis d'authentification, aucune connaissance préalable du système cible, et aucune action requise de la part d'un utilisateur légitime.

Techniquement, la vulnérabilité réside dans l'interaction entre la commande SMTP CHUNKING (BDAT, RFC 3030) et le cycle de vie de la session TLS gérée par GnuTLS. Lors d'un transfert BDAT, si le client envoie une alerte TLS close_notify avant que le transfert ne soit terminé, puis envoie un dernier octet en clair sur la même connexion TCP, Exim se retrouve dans un état incohérent : le buffer TLS a déjà été libéré lors du teardown TLS, mais le wrapper BDAT continue de traiter les octets entrants. Un appel à ungetc() écrit alors un caractère (newline) dans une zone mémoire déjà libérée, atterrissant sur les métadonnées de l'allocateur mémoire d'Exim et corrompant ses structures internes — une corruption de heap d'un seul octet, mais particulièrement bien positionnée pour du contrôle de flux.

Cette primitive de corruption d'un octet (one-byte heap corruption) peut être transformée en exécution de code arbitraire via des techniques d'exploitation de heap bien documentées dans la recherche en sécurité offensive. La fiabilité de l'exploitation n'est pas encore officiellement documentée par des PoC publics au moment de la rédaction, mais la nature de la primitive sur un binaire de service réseau à processus persistant la rend potentiellement très exploitable sur les systèmes Linux courants. Le nom Dead.Letter fait allusion à la notion de lettre morte en messagerie postale — une lettre n'arrivant jamais à destination — appliquée ici à la destruction du processus mail cible.

Exim est l'un des MTA (Mail Transfer Agent) les plus déployés au monde. Selon les statistiques de mail server surveys citées par SecurityOnline, Exim représente environ 56% des serveurs SMTP exposés sur Internet. Les builds GnuTLS sont particulièrement répandues sur les distributions Debian et Ubuntu où GnuTLS est le backend TLS par défaut d'Exim dans les packages officiels. Les distributions Red Hat, CentOS et AlmaLinux utilisent généralement OpenSSL et ne sont donc pas concernées par cette vulnérabilité spécifique. Les hébergeurs web utilisant cPanel, Plesk, ou DirectAdmin avec Exim comme MTA par défaut sur systèmes Debian/Ubuntu sont particulièrement exposés si leur version est dans la plage 4.97-4.99.2.

La commande SMTP BDAT est activée par défaut dans les versions modernes d'Exim, ce qui signifie qu'aucune configuration spéciale n'est requise côté serveur pour être vulnérable. La simple présence d'Exim 4.97-4.99.2 avec GnuTLS exposé sur le port 25 suffit. Contrairement à certaines vulnérabilités Exim passées nécessitant une configuration particulière, Dead.Letter est exploitable dans une configuration Exim standard sortie de la boîte. Le vecteur d'attaque est donc extrêmement large et ne nécessite aucun pré-positionnement.

La chronologie de découverte est instructive quant à la rapidité de la réponse : signalement par Federico Kirschbaum de XBOW le 1er mai 2026, coordination avec l'équipe de sécurité Exim pendant environ trois semaines, publication du patch Exim 4.99.3, puis publication publique de la CVE avec l'avis de sécurité. Aucune exploitation active in-the-wild n'a été documentée avant la publication du patch. Cependant, le délai habituel entre la publication d'une vulnérabilité critique CVSS 9.8+ sur un service aussi exposé qu'SMTP et l'apparition d'exploits actifs est historiquement très court — souvent 24 à 72 heures pour des services de cette importance.

Le référentiel NVD/NIST a formellement enregistré CVE-2026-45185 avec le score CVSS 9.8 Critical et le type de faiblesse CWE-416 (Use After Free). L'advisory Exim correspondant est disponible dans les notes de release d'Exim 4.99.3. L'équipe de sécurité Exim précise explicitement dans ses notes qu'il n'existe aucune mitigation alternative satisfaisante : désactiver BDAT via la directive de configuration chunking_advertise_hosts peut réduire la surface d'attaque mais n'est pas recommandé comme substitut durable au patch. La mise à jour vers 4.99.3 est l'unique mesure de protection recommandée.

Impact et exposition

Tous les serveurs Exim versions 4.97 à 4.99.2 compilés avec GnuTLS sont vulnérables à CVE-2026-45185. Dans la pratique, cela représente une fraction significative des installations Exim sous Debian, Ubuntu et leurs dérivés, ainsi que toutes les installations via cPanel sur systèmes Debian/Ubuntu. Un attaquant disposant d'un accès réseau au port 25 peut exploiter la vulnérabilité sans aucun compte sur le système et sans interaction des utilisateurs.

L'exploitation réussie donne à l'attaquant l'exécution de code arbitraire dans le contexte du processus Exim. Sur la majorité des déploiements Linux, Exim tourne sous un utilisateur dédié (généralement mail ou exim) mais dispose d'accès root via setuid pour certaines opérations de livraison. Une escalade de privilèges vers root est donc à considérer comme probable en cas d'exploitation complète. Un serveur mail compromis permet également l'interception de tout le trafic mail entrant et sortant, représentant un risque majeur pour la confidentialité des communications de l'organisation.

La surface d'exposition mondiale est estimée à plusieurs millions de serveurs SMTP basés sur Exim. Les hébergeurs mutualisés, les VPS sous Debian/Ubuntu et les infrastructures mail d'entreprise utilisant Exim constituent les principaux vecteurs de risque. Sans supervision active des versions installées, de nombreux systèmes peuvent rester sur des versions packaging non encore mises à jour via les gestionnaires de paquets des distributions.

Recommandations immédiates

  • Mettre à jour Exim vers la version 4.99.3 immédiatement : apt update && apt upgrade exim4 sur Debian/Ubuntu après mise à jour des dépôts de sécurité, ou compilation depuis les sources Exim
  • Vérifier le backend TLS avec exim -bV | grep -i gnutls — si GnuTLS apparaît dans la sortie, la mise à jour est urgente
  • En l'absence de patch immédiat : désactiver BDAT via chunking_advertise_hosts = (valeur vide) dans la configuration Exim pour réduire la surface — mesure temporaire uniquement, non recommandée comme protection définitive
  • Vérifier les journaux mail (/var/log/mail.log ou /var/log/exim4/mainlog) pour des connexions SMTP avec des patterns BDAT inhabituels, des crashs ou restarts du processus Exim
  • Pour les hébergeurs mutualisés : vérifier la version Exim de chaque serveur de mail et prioriser les mises à jour sur les serveurs exposant le port 25 directement sur Internet

⚠️ Urgence

Dead.Letter (CVE-2026-45185) est une RCE non authentifiée CVSS 9.8 sur Exim, l'un des serveurs mail les plus déployés au monde avec des millions d'instances exposées. Aucune mitigation alternative n'existe : seule la mise à jour vers Exim 4.99.3 protège le système. L'exploitation active est probable dans les prochains jours compte tenu de la surface d'attaque massive et de la facilité d'exploitation de la primitive use-after-free.

Comment savoir si je suis vulnérable ?

Exécutez exim --version ou exim4 --version pour obtenir la version installée. Si elle est comprise entre 4.97 et 4.99.2, vérifiez le backend TLS avec exim -bV | grep -i tls. Si la sortie mentionne GnuTLS, votre instance est vulnérable à CVE-2026-45185. Sur Debian/Ubuntu, vérifiez également via dpkg -l | grep exim4 et contrôlez que la version du paquet intègre le correctif (4.99.3 ou supérieure dans les dépôts de sécurité).

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités.

Demander un audit