SMTP vers les serveurs de Gmail. Ils ont ainsi découvert qu’une grande quantité
des connexions SMTP avec TLS explicite à destination de Gmail était altérée par
des attaquants actifs. Dans certains pays, comme la Tunisie, jusqu’à 96% des
connexions sont affectées par un attaquant, tandis que 9% des connexions sont
affectées en France, et plus particulièrement à l’île de la Réunion.
Le mode opératoire de l’attaquant est de remplacer à la volée dans la connexion
TCP l’option du serveur ou la sollicitation du client par une chaîne de même
longueur que `STARTTLS`, non reconnue par l’autre partie, comme `XXXXXXXX`. En
conséquence, le client ne verra pas l’option `STARTTLS`, mais une option
`XXXXXXXX` qu’il ne sait pas utiliser, ou le serveur recevra une commande
`XXXXXXXX` du client, à laquelle il répondra avec un message d’erreur indiquant
qu’il s’agit d’une commande invalide.
Finalement, la validation des certificats TLS dans le cadre de SMTP est très en
retard par rapport à celle de HTTPS. Par exemple, dans l’étude [^RainSnowMITM],
environ 66% des certificats présentés par les serveurs SMTP sont invalides
(mauvais sujet, principalement, mais aussi certificats périmés ou autosignés).
Le chiffrement est dit « opportuniste » lorsque les serveurs SMTP acceptent
aveuglément tout certificat présenté. C’est le cas de la plupart des
déploiements de SMTP sur l’Internet. De plus, au moment où ces lignes sont
écrites, aucune implémentation de SMTP sur TLS connue de l’auteur n’est
compatible avec Certificate Transparency. Comparativement, pour le web, tout
certificat émis à partir d’avril 2018 et n’étant pas dans Certificate
Transparency est jugé invalide par le navigateur Chrome.
---
Certificate Transparency est une technologie et un écosystème qui permettent au titulaire d’un nom de domaine de lister les certificats émis pour son nom de domaine, et d’ainsi vérifier qu’ils ont tous été émis avec son accord. Certificate Transparency a été présenté dans MISC Hors-Série n°13, article « Souriez ! Les autorités de certification sont filmées ! ».
Lorsqu’un serveur SMTP cherche à envoyer un courrier électronique à un tiers inconnu, la recherche du serveur SMTP à contacter s’effectue grâce au DNS. Pour cela, une recherche d’enregistrement de type MX (pour Mail eXchanger, ou relais de courriers, en français) est initiée. Ces enregistrements contiennent les noms des serveurs SMTP à contacter, noms qui doivent ensuite être résolus en adresse IP. Voici un exemple d’enregistrements MX :
```
example.com. 86400 IN MX 5 mail1.example.com.
example.com. 86400 IN MX 10 smtp.example.net.
```
Dans le même papier [^RainSnowMITM], les chercheurs ont également évalué la
propension des attaquants à remplacer les enregistrements MX légitimes par des
enregistrements MX contenant des noms de domaine sous son contrôle. Ce faisant,
le serveur expéditeur enverra le courrier directement aux serveurs de
l’attaquant, qui pourra prendre connaissance du contenu. L’attaquant peut,
ensuite, éventuellement faire suivre le courrier aux vrais serveurs
destinataires afin de rendre « transparente » l’attaque, en l’absence d’une
politique SPF sur le domaine expéditeur. En présence de SPF, l’attaquant peut
émuler un problème serveur, à la suite de la réception du contenu du courrier,
par exemple, en renvoyant une erreur temporaire, indiquant un espace de stockage
insuffisant (erreur 452). Le serveur expéditeur original réessaiera alors de
transmettre ultérieurement le courrier, cette fois-ci au serveur destinataire
légitime, qui saura valider la légitimité de l’expéditeur avec SPF.
Les auteurs de [^RainSnowMITM] ont interrogés les serveurs DNS récursifs et les
relais DNS (forwarders) souffrant d’un défaut de contrôle d’accès (serveurs
appelés résolveurs DNS ouverts) afin de collecter des réponses DNS depuis de
nombreux points d’observation de l’Internet. Le résultat de ces mesures actives
a révélé que 2% des serveurs DNS interrogés renvoyaient une réponse frauduleuse
pouvant mener au détournement de courriers électroniques.
Il convient de noter que cette attaque ne saurait être prévenue même si
l’expéditeur exigeait l’utilisation de TLS avec des certificats X.509 valides
(sujet, dates, usage, etc.) de la part du destinataire. En effet, l’hébergement
mutualisé de plusieurs domaines sur un seul serveur SMTP de réception n’emploie
pas l’extension TLS appelée {{<abbr"SNI""ServerNameIndication">}}. À la
place, c’est le nom du serveur SMTP fourni dans l’enregistrement MX qui est
généralement recherché à l’intérieur du certificat présenté par le serveur SMTP
destinataire. Or, si l’enregistrement MX n’est pas signé avec DNSSEC, celui-ci
peut être modifié à la volée par un attaquant pour y mettre tout nom sous son
contrôle et pour lequel il est en mesure d’obtenir un certificat valide et
légitime.
---
SNI permet de spécifier lors de l’initialisation de la connexion TLS, un nom de domaine spécifique parmi plusieurs domaines cohébergés sur la même machine ; c’est ainsi que l’on peut avoir plusieurs hôtes virtuels (*Virtual Host*) sur une même adresse IP servant du HTTPS.
---
L’emploi de SNI aurait permis à un expéditeur de préciser pendant la négociation
TLS qu’il envoyait un courrier électronique à destination d’une adresse en
`@example.com`. Le serveur de destination aurait alors pu fournir un certificat
valide pour `example.com`.
Plusieurs explications existent pour justifier ce choix qui semble sous-optimal.
En premier lieu, les serveurs SMTP réutilisent les connexions TCP/TLS ouvertes
entre deux hôtes, afin de créer un pipeline. Cette réutilisation vise à éviter,
lorsque c’est possible, le coûteux établissement d’une connexion TCP/TLS pour
l’envoi d’un unique courrier. Il ne semblerait donc pas correct de réutiliser
une connexion établie et authentifiée pour `example.com` pour l’envoi d’un
courrier au nom de domaine cohébergé `example.net`. À la place, deux connexions
indépendantes vers la même adresse IP devraient être employées ; un coût que
tous les opérateurs ne souhaitent pas payer.
Ensuite, utiliser SNI présente le défaut de divulguer une partie des métadonnées
(le nom du domaine du destinataire parmi les N domaines cohébergés) à un
Dans cet article, nous avons étudié différentes menaces pouvant affecter les
échanges de courriers électroniques, en présence d’un attaquant actif. La figure
1 rappelle ces dernières de manière synthétique.
![Synthèse des menaces étudiées dans cet article](./schema_smtp.jpg "Fig. 1 : Synthèse des menaces étudiées dans cet article pouvant affecter les échanges de courriers électroniques. Les flux en rouge sont créés ou modifiés par l’attaquant.")
Nous avons également observé l’effet positif que DNSSEC peut avoir pour
améliorer la sécurité des échanges de courriers électroniques. Hélas, son faible
taux de déploiement à ce jour, signifie que la plupart des courriers
électroniques peuvent être et sont la proie d’attaques actives plus ou moins
ciblées (comme le cas tunisien, évoqué en section 2.1 nous l’a montré).
Les utilisateurs souhaitant échanger de manière confidentielle sont encouragés à
chiffrer le contenu de leurs courriers électroniques, en complément de la
protection offerte, de manière opportuniste ou non, par TLS. Il existe pour cela
plusieurs options, dont des moyens intégrés (comme S/MIME ou, dans une moindre
mesure, OpenPGP), ou non (comme ceux listés dans le catalogue des produits
certifiés par l’ANSSI). Dans le cas du chiffrement opportuniste, les métadonnées
de ces échanges ne sont, cependant, protégées que contre les écoutes passives
lors de leur transit sur le réseau. Les administrateurs de serveurs de courriers
électroniques souhaitant offrir une sécurité adéquate à leurs utilisateurs
contre les attaques actives devraient donc signer leurs zones DNS avec DNSSEC,
publier des enregistrements TLSA, et configurer leurs serveurs pour utiliser
DANE lorsqu’il est disponible.
Pour finir, publier des enregistrements SPF, DKIM et DMARC signés participe à
lutter contre les usurpations d’identité. Il convient cependant d’exiger des
signatures DNSSEC sur les enregistrements DMARC ou de désactiver l’envoi de
rapports dans son validateur DMARC, lorsque la configuration logicielle le
permet, afin d’éviter les exfiltrations de métadonnées sur les courriers
[^collect]: Outil de mesures DNS développé pour cet article : https://github.com/X-Cli/collectDNSSECEmailStats
[^ObsANSSI]: Observatoire de la résilience de l’Internet français : https://www.ssi.gouv.fr/observatoire
[^SaferEmail]: Site de Google pour la consultation de statistiques de SMTP sur TLS : https://transparencyreport.google.com/safer-email/overview
[^Charte]: Charte de l’ANSSI pour l’amélioration de la sécurité des échanges de courriers électroniques : https://www.ssi.gouv.fr/particulier/precautions-elementaires/charte-pour-la-securite-des-courriers-electroniques/
[^BSI]: Document équivalent au lien précédent, rédigé par l’homologue de l’ANSSI en Allemagne : http://www.project-consult.de/files/BSI_TR03108-1_Sichere_EMail.pdf
[^RFC6698]: The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol : TLSA https://tools.ietf.org/html/rfc6698
[^RFC6844]: DNS Certification Authority Authorization (CAA) Resource Record : https://tools.ietf.org/html/rfc6844
[^EtudeCAA]: CAA Study : https://caastudy.github.io/
[^EtudeDANE]: Measuring DANE TLSA Deployment : https://www.isi.edu/~liangzhu/presentation/dns-oarc/dane_tlsa_survey.pdf
[^RainSnowMITM]: Neither Snow Nor Rain Nor MITM… An Empirical Analysis of Email Delivery Security : https://static.googleusercontent.com/media/research.google.com/fr//pubs/archive/43962.pdf
Publié par les [Editions Diamond](https://connect.ed-diamond.com/MISC/misc-097/smtp-la-killer-app-de-dnssec) sous licence [CC-BY-NC-ND](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.fr).