Décryptage d’EFAIL, la nouvelle brèche dont tout le monde parle
21/12/2023 - 8 minutes
Le EFAIL est une vulnérabilité de sécurité affectant plusieurs clients PGP, dès lors que le S/MIME y est utilisé. Cela signifie que les emails envoyés en S/MIME et chiffrés avec un certain nombre de clients PGP peuvent être récupérés déchiffrés par un attaquant, qui aurait envoyé un mail forgé à la victime.
J’ai deux secondes, explique-moi tout en quelques lignes
- Est-ce nouveau ? Non.
- Est-ce la fin du monde ? Non.
- Est-ce que ça m’impacte ? Probablement pas.
- J’utilise PGP, dois-je arrêter ? Surtout pas !
- Comment comprendre de quoi il s’agit ? En accordant plus de deux secondes à notre article 🤔
Glossaire
Avant d’expliquer simplement l’attaque, ses risques, et comment diminuer le risque, il faut expliquer de quoi on parle ici.
PGP
Pretty Good Privacy (en français : « assez bonne confidentialité »), plus connu sous le sigle PGP, est un logiciel de chiffrement cryptographique, développé et diffusé aux États-Unis par Philip Zimmermann en 1991.
PGP se propose de garantir la confidentialité et l’authentification pour la communication des données. Il est souvent utilisé pour la signature de données, le chiffrement et le déchiffrement des textes […] pour accroître la sécurité des communications par courriel. […]
― Wikipedia, “🇫🇷 Pretty Good Privacy“
En bref, un utilisateur de PGP diffuse une clef publique et conserve une clef privée (qui ressemble à un petit bloc de texte aléatoire, plus ou moins long suivant la force du chiffrement) permettant deux choses :
- Signer un document/email : Je diffuse ma clef publique, signe un document avec PGP, une personne peut ainsi prendre le document, et vérifier que son contenu n’a pas été altéré en vérifiant sa signature avec PGP et la clef publique précédemment diffusée.
- Me faire envoyer un document/email chiffré : Je diffuse ma clef publique, un correspondant chiffre un document à l’aide de cette clef publique, seul ma clef privée permet de le déchiffrer. Il me l’envoie, peu importe qui peut accéder au document/email, je suis le seul à pouvoir le lire vu que je suis le seul à avoir la clef privée.
Qui utilise PGP et pourquoi ?
Pour l’auteur de PGP, Philip Zimmermann, utiliser PGP est un moyen militant permettant de préserver la démocratie. En chiffrant toutes les communications, il est complexe pour un état de rendre le chiffrement illégal.
L’utilisation de PGP, sur le volume de mails envoyés, reste marginal. Il est même impossible de savoir réellement quel pourcentage de mails utilisent PGP car le fonctionnement des emails n’est pas centralisé et il faudrait ouvrir chaque email pour savoir s’il utilise PGP.
Cependant, d’après certains services qui enregistrent des sortes de “fichiers contact” de clefs publiques, on constate après chaque révélation de lanceurs d’alertes une augmentation du nombre de clefs enregistrées.
PGP est beaucoup plus utilisé en revanche pour son coté signature. Il permet d’assurer à un destinataire que le texte envoyé n’a pas été modifié, ainsi quand un mail est transféré plusieurs fois, Le dernier destinataire peut en théorie vérifier que le document/message est resté le même.
MIME
Le format MIME est utilisé pour stocker plusieurs meta informations relatives à un document. C’est à dire, des données relatives au document en lui-même, à son contexte. C’est en quelque sorte une méthode pour envoyer un contenu numérique sous forme de texte.
Avec MIME, en théorie, je peux imprimer la représentation textuelle d’une vidéo puis l’envoyer par courrier à quelqu’un, qui en retapant tout ce code sur son ordinateur, pourrait lire la vidéo.
MIME va donc contenir, sous forme de texte, tout le contenu riche d’un email (HTML/TXT/Pièces jointes), avec les informations relatives (meta données) sans lesquelles il serait complexe de savoir de quel type de donnée il s’agit.
S/MIME
Il s’agit ni plus ni moins du croisement entre chiffrement et MIME. On ajoute des meta données indiquant la signature d’un document/email, ou encore la clef publique de l’expéditeur (pour lui répondre de manière chiffrée). Ce n’est pas obligatoire, mais ça permet aux clients de messagerie de traiter automatiquement les chiffrements PGP, ce qui simplifie beaucoup l’utilisation.
Email forgé
Par email forgé, on entend un email qui a été modifié volontairement via une édition de son code “brut” (S/MIME ici) afin de le “bidouiller”. Dans l’exemple précédent de la vidéo envoyée par courrier plus haut, le moment où le courrier serait “forgé” c’est quand on modifie directement le code écrit sur le papier, celui qui le forge pourrait être n’importe qui entre l’impression et la saisie dans la machine.
Histoire de cette problématique de sécurité
Tout d’abord, elle est tout sauf nouvelle. Elle est en réalité la combinaison de plusieurs comportements et traitements de S/MIME.
Comme indique Robert J. Hansen (Un orateur assez connu pour ses interventions aux 🇫🇷 DEFCON, mais surtout ingénieur travaillant sur PGP et Enigmail), lundi, dans 🇬🇧 son communiqué de presse, la plupart des éléments de cette faille de sécurité sont connus depuis près de 20 ans.
En 1999, on a réalisé qu’OpenPGP cipher mode a une faiblesse : dans certains cas un attaquant peut modifier le texte.
― Robert J. Hansen
PGP et OpenPGP
Ce qu’il ne faut pas oublier ici c’est que PGP se base sur un standard du nom d’OpenPGP, qui “explique” comment doit fonctionner PGP. Il existe ainsi tout un tas de logiciels utilisant le même standard. C’est pour cela que ces logiciels fonctionnent entre eux, ils parlent le même langage.
Tout le monde peut créer son propre logiciel basé sur OpenPGP, son propre client PGP. Cependant, quand un bug, ou une faille existe sur un client PGP, on ne peut accuser le standard, mais le premier à blâmer est le client PGP.
Théorie d’exploitation de cette faille
Quand un client PGP voit un bloc chiffré, il le déchiffre. Or, les clients qui posent problème sont ceux qui font ça peu importe le contexte et où se trouve ledit bloc chiffré.
Ainsi, quand un bloc chiffré se retrouve dans une sous-section MIME text/html, le bloc va être déchiffré, et ensuite le HTML interprété.
Si on place un bloc chiffré dans une balise HTML qui va accéder à une ressource externe automatiquement (img
, iframe
), le HTML va envoyer le bloc déchiffré à la ressource externe.
Donc, une personne malveillante qui a intercepté un message chiffré et qui souhaite en connaitre le sens, peut, en théorie, le renvoyer à la personne ayant la clef en plaçant le bloc chiffré qu’elle souhaite déchiffrer dans une balise image avant de l’envoyer à une personne (probablement le destinataire originel) ayant la capacité de le déchiffrer. En ouvrant le mail, le message va être déchiffré, la ressource distante va être tentée d’être chargée, et par extension, le message va fuiter en clair sur ladite ressource distante.
Comment se prémunir
Tout d’abord, je conseille vivement l’utilisation d’un client mail comportant un bloqueur automatique de ressources externes. (Thunderbird et Protonmail sont deux bons exemples). Ainsi, même si le bloc était déchiffré, la fuite ne se fait pas automatiquement mais après que l’utilisateur ait explicitement demandé d’afficher les sources externes.
Aujourd’hui c’est PGP, mais il ne faut pas oublier les traceurs de mails qui exploitent déjà et depuis longtemps cette faille. Quand vous ouvrez un mail qui comporte un traceur image par exemple, l’expéditeur sait exactement que vous avez ouvert son mail, à quelle heure, souvent avec d’autres informations comme le client utilisé, autant d’informations qui peuvent aider une campagne d’hameçonnage. Et surtout une violation de la vie privée.
Ne pas oublier qu’il existe une disposition pour demander à l’utilisateur de signaler qu’il a bien lu un email (🇬🇧 RFC 2298). Cette disposition fonctionnant sur un principe de respect de la vie privée.
Une solution plus extrême peut être de configurer son client mail, quand cela est possible, pour ne pas afficher le html, il est généralement possible de le faire pour qu’il affiche que le texte clair (plain text), et non pas le html. Dans ce cas, vous risquez de ne plus pouvoir lire certains mails comme les lettres d’information (newsletter), mais votre client mail sera certainement plus rapide.
Enfin, quand cela est possible, vous pouvez désactiver le déchiffrement automatique, et déchiffrer manuellement les messages.
🙏 N’arrêtez pas de chiffrer
Contrairement aux recommandations que l’on a pu lire dans la presse, la pire réaction serait de désactiver complètement vos outils de chiffrement. N’oubliez pas que chiffrer vos messages, ça vous protège, mais ça protège surtout les autres et ceux qui en ont réellement besoin, car dans la masse, plus il y a de messages chiffrés, moins ces derniers semblent suspects.
Continuez de chiffrer, utilisez des outils qui permettent de le faire, je ne doute pas que la plupart seront très rapidement corrigés.
La meilleure analogie qui me vient en tête serait la suivante : Si vous savez que peut être un jour un courrier peut être ouvert par quelqu’un d’autre que le destinataire, allez-vous pour autant envoyer tous vos courriers sans enveloppe ? Si vous avez un problème avec votre serrure, que peut être quelqu’un peut crocheter, allez-vous laisser votre porte ouverte ?