Attaques contre les mécanismes de protections par chiffrement d’échanges de courriels

Le 14 mai 2018, une vulnérabilité connue sous le nom d’EFAIL était rendue publique [1]. Publiés par une équipe de chercheurs des universités  allemandes de Münster et Bochum, ainsi que de l’entreprise NXP Semiconductors, ces travaux démontrent la faisabilité d’attaques contre les protocoles de sécurisation des échanges de courriels S/MIME et OpenPGP visant à récupérer le texte clair d’un courriel protégé par chiffrement[2].

Ces protocoles peuvent être utilisés afin d’assurer le chiffrement de bout-en-bout des échanges de courriels. Si la mise en place d’un canal de communication sécurisé permet d’assurer une certaine protection à des échanges, un chiffrement des communications seules ne permet cependant pas d’en garantir la confidentialité. Des scénarios de compromission d’un serveur de messagerie peuvent par exemple être imaginés comme vecteur d’attaque à l’encontre d’une correspondance. De ce fait, l’utilisation de mécanismes de chiffrement des courriels, comme ceux dont il est question ici, est généralement recommandée pour assurer la confidentialité d’échanges sensibles.

Les chercheurs à l’origine de la vulnérabilité EFAIL sont néanmoins parvenus à compromettre des échanges sécurisés par les protocoles S/MIME et OpenPGP en menant des attaques exploitant à la fois des faiblesses présentes dans de nombreux clients de messagerie et des propriétés particulières des algorithmes cryptographiques utilisés par ces protocoles.

Attaque directe

Client de messagerie et contenu actif

Lors du traitement d’un courriel par un logiciel de messagerie, ce dernier peut être en mesure de gérer différents formats qui utilisés pour enrichir le contenu textuel. Outre le texte, il est par exemple possible d’ajouter des images, des liens hypertextes ou encore des sons au sein d’un courriel. Afin de permettre l’intégration de ces éléments, l’utilisation de langages spécifiques tels que le HTML ou le CSS peut être mise en œuvre. Ce contenu est alors interprété par le logiciel de messagerie pour produire le rendu final, ce qui peut amener le client à réaliser des communications réseaux pour obtenir des ressources hébergées sur un serveur distant.
On désignera ainsi comme du contenu distant ce type de ressources, et on parlera de contenu actif pour les éléments du message qui réaliseront des requêtes.

De façon générale, le contenu actif interprété par les clients de messagerie peut faire fuiter de l’information. L’attaque EFAIL permet plus spécifiquement d’exfiltrer le contenu d’un courriel protégé par chiffrement.
Plusieurs méthodes peuvent être utilisées pour parvenir à ces fuites de données. Comme mentionné précédemment, cela inclut l’utilisation de balises HTML ou de feuille de style, mais d’autres canaux tels que ceux liés à la gestion des certificats cryptographiques, notamment OCSP ( Online  Certificate Status Protocol) et CRL (Certificate Revocation Lists), ont aussi été explorés par les auteurs.

<img src="http://serveur.distant.net/ressource">
<style>body{ background-image: url(’http://serveur.distant.net’); } </style>
Exemple de contenu actif

Fuite de données par attaque directe

La première attaque présentée par l’équipe de chercheurs propose d’utiliser du contenu actif pour construire un nouveau courriel qui permettra la fuite de données.
Le format MIME (Multipurpose Internet Mail Extensions) est conçu pour étendre les différents formats  supportés dans des courriels. L’une des fonctionnalités de ce format donne la possibilité de définir des messages composés de plusieurs parties. Ces parties peuvent correspondre à différents types de contenu (texte, contenu encodé, …). La définition de ce type de message est visible par une entête de la forme ‘Content-Type: multipart/mixed; boundary=<BOUNDARY>‘. Dans le cadre de l’attaque EFAIL, un attaquant en possession d’un courriel au contenu chiffré va positionner du contenu actif autour de la partie chiffré par ajout de parties. Certains clients de messagerie vulnérables réaliseront alors les opérations de déchiffrement avant d’interpréter le contenu actif des différentes parties du message. Ce contenu sera par conséquent concaténé avec la version déchiffré du message, permettant la fuite de données sur le réseau (cf. figure 2).

Exemple d'attaque par insertion de parties

Exemple d’attaque par insertion de parties (source: efail.de)

D’après les tests réalisés par les auteurs de l’étude EFAIL, plusieurs clients de messagerie populaires ont été identifiés comme étant vulnérables à une attaque de ce type, comme Apple Mail ou Mozilla Thunderbird.
Il est à noter que dans cette variante de l’attaque, aucune action n’est entreprise contre les mécanismes cryptographiques sur lesquels repose la  sécurisation des échanges. En particulier, aucune modification de la partie chiffrée n’est réalisée.
Une seconde forme d’attaque, aussi publiée par les chercheurs dans le cadre d’EFAIL, est cependant orientée contre les mécanismes  cryptographiques utilisés par S/MIME et OpenPGP.

Attaque cryptographique

Si le principe de juxtaposition de message multipart permet de construire directement un canal d’exfiltration, il est aisément détectable et peut être contré en isolant correctement les parties du message.

Cependant, il est possible d’aller plus loin en adoptant une stratégie tirant partie de la malléabilité des modes de chiffrement utilisés par S/MIME et OpenPGP. En effet, bien que les modes de chiffrement employés par S/MIME et OpenPGP assurent la confidentialité des données protégées, i.e. un attaquant n’obtient pas d’information sur les clairs à partir des chiffrés, l’attaquant peut toutefois modifier les chiffrés de manière à induire des modifications contrôlées sur les déchiffrés. En utilisant cette malléabilité, il peut mener une attaque consistant à construire un message chiffré dont le déchiffrement induit un canal d’exfiltration.

A titre d’exemple, considérons le mode CBC mis en œuvre par S/MIME. L’équation de chiffrement du i-ème bloc de message clair  s’écrit où E est l’algorithme de chiffrement par bloc mis en œuvre, K est la clé de chiffrement du message, est le bloc de chiffré correspondant, et  est le bloc de chiffré précédent. L’équation de déchiffrement, montre que le i-ème bloc de déchiffré ne dépend que des blocs i-1 et i du chiffré. De plus une variation du bloc i-1 entraîne la même variation sur le bloc de déchiffré, alors qu’une variation sur le deuxième bloc entraîne une variation imprédictible du déchiffré pour qui ne possède pas la clé de chiffrement K. Si le bloc de chiffré  est connu, la possibilité de contrôler la variation sur le bloc de déchiffré permet de modifier le bloc de chiffré  de telle sorte que le bloc de déchiffré  correspondant prenne une valeur choisie par l’attaquant.

Principe de la malléabilité des opérations en mode CBC et CFB

Principe de la malléabilité des opérations en mode CBC et CFB (source:efail.de)

L’attaquant peut notamment construire une balise induisant un canal d’exfiltration. Quelques adaptations peuvent s’avérer nécessaires pour traiter le bloc de déchiffré précédent qui est perturbé de manière non contrôlée par la modification du bloc . Par exemple, le chiffré peut être modifié de telle sorte que le bloc de déchiffré non contrôlé soit inséré dans un commentaire.

Attaque EFAIL par altération du texte chiffré

Attaque EFAIL par altération du texte chiffré (source:efail.de)

Afin de pouvoir mener l’attaque, l’attaquant doit donc connaître une portion suffisamment longue du message en clair qui est attaqué. Le formatage des données chiffrées peut offrir à l’attaquant cette information. Si ce n’est pas le cas, des procédures ad-hoc sont envisagées par les  auteurs de l’attaque EFAIL, avec pour conséquence une diminution du taux de succès de l’attaquant, qui reste néanmoins non négligeable.

Si ces attaques reposent toutes sur la présence de canal d’exfiltration de données dans les clients de messagerie, elles trouvent leur origine dans la malléabilité du mécanisme de chiffrement. Les mécanismes de chiffrement à l’état de l’art sont des mécanismes de chiffrement authentifié : un motif d’intégrité est intégré au chiffré, et vérifié lors du déchiffrement. Ce test permet de détecter de potentiels chiffrés malicieux, et donc de prévenir toute fuite d’information en stoppant l’interprétation des déchiffrés pour lesquels le test d’intégrité échoue.
OpenPGP dispose déjà de deux mécanismes permettant de vérifier l’intégrité des chiffrés : l’ajout d’une signature sur le message chiffré et l’utilisation d’un mode ad-hoc de chiffrement intègre, les paquets dits Symmetrically Encrypted Integrity Protected (SEIP), qui intègre un motif d’intégrité appelé MDC au chiffré. Malheureusement, dans les deux cas les chiffrés peuvent être manipulés pour en retirer les motifs d’intégrité, en supprimant le paquet OpenPGP portant la signature, ou en transformant un paquet SEIP en un paquet chiffré sans intégrité.
Afin de bloquer ces attaques au niveau  cryptographique, les clients de messagerie doivent empêcher le déchiffrement des chiffrés non protégés en intégrité, et conditionner le traitement des déchiffrés, par exemple l’interprétation de contenu HTML, à la vérification du motif d’intégrité. A plus long terme, des travaux ont été entrepris autour d’évolutions du standard OpenPGP pour améliorer l’intégration de mécanismes de chiffrement authentifiés à l’état de l’art.

Portée de l’attaque

Les attaques regroupées sous le nom d’EFAIL sont conditionnées par plusieurs facteurs.
En effet, avant de pouvoir exploiter ces vulnérabilités,  l’attaquant doit être en mesure d’intercepter les courriers électroniques chiffrés. Cela peut s’effectuer au niveau du réseau, avec une difficulté supplémentaire si les communications entre les serveurs relais sont elles-même chiffrés. L’attaquant peut également tenter de prendre le contrôle de l’un de ces serveurs relais.
Ce prérequis est loin d’être trivial et limite donc drastiquement le type d’attaquant en mesure de mener cette exploitation. Cependant, c’est précisément contre des adversaires disposant de ce type de capacités que S/MIME et OpenPGP permettent initialement de se prémunir.

Par ailleurs, il est important de considérer qu’une fois intercepté, un message peut être conservé sans limite de temps jusqu’à ce qu’une opportunité de le déchiffrer se présente. Des messages électroniques interceptés plusieurs années auparavant pourraient alors être déchiffrés avec ces vulnérabilités.
On notera également que la surface d’attaque augmente avec le nombre de destinataires. En effet, comme le message est chiffré avec la clé publique de chaque destinataire et de l’expéditeur, si l’un d’eux utilise un client vulnérable à EFAIL, l’attaquant serait dès lors en mesure de déchiffrer le message.
L’exploitation de la vulnérabilité dépendra aussi dans ce cas du client de messagerie ciblé ainsi que de sa configuration. Plusieurs clients sont en effet capables de procéder au déchiffrement automatique du message lors de sa lecture, sans nécessairement requérir une action de l’utilisateur. Le mot de passe utilisé pour le déchiffrement peut par exemple être conservé par le client de messagerie après une première saisie.

Cette attaque, dans sa première version, requiert l’envoi d’un courriel possédant une forme particulière. Comme expliqué précédemment, il est ainsi possible de détecter, éventuellement en amont, sinon à posteriori, une tentative d’attaque sur le principe d’EFAIL. Cela nécessite cependant d’archiver ses courriers électroniques. On peut toutefois imaginer qu’un attaquant possédant les capacités suffisantes pourrait également se placer sur le serveur de messagerie en bout de ligne pour y effacer proprement ses traces.

Réactions et correctifs

Suite à la publication du site sur la vulnérabilité EFAIL et de l’annonce de l’EFF [3][4], le responsable de GnuPG a répondu en mettant en cause les clients de messageries et pointant la faible utilisation des mécanismes de chiffrement authentifié dans les implémentations [5].
ProtonMail a également publié un communiqué [6], tout comme les développeurs de gpg4win [7]
A l’heure actuelle, seul Enigmail, le greffon GPG pour Thunderbird propose un correctif partiel [8].
L’EFF a proposé d’arrêter d’utiliser GPG au profit de Signal. Or, il se trouve que la même semaine une vulnérabilité critique a été rendue publique sur cet autre moyen de communication chiffré [9].

Recommandations

Le CERT-FR recommande l’application des correctifs au niveau des clients de messagerie dès la mise à disposition de ceux-ci.

Le problème de la sécurisation des transmissions est complexe. Il convient dès lors d’adapter ses solutions de sécurité à la sensibilité des  informations que l’on souhaite protéger.

Sans se prononcer sur les informations qui sont de nature à intéresser le type d’adversaire capable de réaliser une attaque de ce niveau, il est possible de prendre certaines précautions, qui ne seront pas forcément toutes applicables en fonction des contextes.

On peut stocker ses clés privées sur une carte à puce. A partir du moment où celle-ci n’est pas connectée à l’ordinateur, le déchiffrement n’est pas possible. De manière générale, cette bonne pratique rend presque impossible le vol des clés privées. De plus, ici, cela empêche le déchiffrement automatique des messages à défaut de prévenir l’attaque.
Il est aussi possible de copier le contenu du message chiffré pour le déchiffrer dans une autre application dédiée aux opérations de chiffrements et de déchiffrements, à partir du moment où celle-ci n’ouvre pas de connexions vers l’extérieur. Plus encore, il est également possible d’effectuer le déchiffrement sur une machine déconnectée du réseau. Il reste toutefois le risque résiduel que le moyen de transfert soit infecté par un maliciel capable de se propager sur la machine non connectée et récupérer le contenu déchiffré. Ce risque est bien sûr peu  probable, mais pas hors de portée de la classe d’attaquants dont il est question ici.

Documentation

  1. Site détaillant le principe de la vulnérabilité du 14 mai 2018
    https://efail.de/
  2. Article de recherche présentant les travaux sur la vulnérabilité EFAIL
    https://efail.de/efail-attack-paper.pdf
  3. Communiqué d’EFF du 13 mai 2018 en réaction à l’annonce d’une publication à venir sur des vulnérabilités affectant PGP et S/MIME
    https://www.eff.org/deeplinks/2018/05/attention-pgp-users-new-vulnerabilities-require-you-take-action-now
  4. Communiqué d’EFF du 14 mai 2018 à la suite de la publication des détails sur la vulnérabilité EFAIL
    https://www.eff.org/deeplinks/2018/05/not-so-pretty-what-you-need-know-about-e-fail-and-pgp-flaw-0
  5. Fil de discussion sur la liste GnuPG concernant la vulnérabilité EFAIL
    https://lists.gnupg.org/pipermail/gnupg-users/2018-May/060315.html
  6. Annonce de ProtonMail relative à la vulnérabilité EFAIL
    https://protonmail.com/blog/pgp-vulnerability-efail/
  7. Annonce de GPG4win relative à la vulnérabilité EFAIL
    https://www.gpg4win.org/statement-efail.html
  8. Annonce de sécurité Enigmail sur les correctifs en lien avec la vulnérabilité EFAIL
    https://sourceforge.net/p/enigmail/forum/announce/thread/db05a753/
  9. Article de blogue du 14 mai 2018 annonçant la découverte de vulnérabilité dans Signal-desktop
    https://ivan.barreraoro.com.ar/signal-desktop-html-tag-injection/advisory/

Rappel des avis émis

Dans la période du 14 au 20 mai 2018, le CERT-FR a émis les publications suivantes :