Attaques CSS contre les webmails : comment des emails piégés peuvent voler mots de passe et jetons
Églantine Montclair
Une nouvelle recherche présentée au Black Hat USA 2026 révèle que le contenu d’un email peut s’échapper de sa zone de rendu et interférer avec l’interface du webmail, permettant de capturer mots de passe et jetons d’authentification. Ces attaques CSS exploitent des failles de conception des clients de messagerie pour franchir la barrière entre un message non fiable et l’interface de confiance. Outlook, Gmail, Fastmail, Proton Mail, Yahoo Mail et AOL Mail sont tous concernés, avec des conséquences allant du vol de mot de passe à la prise de contrôle de comptes tiers. Cet article détaille les mécanismes découverts par le chercheur Gareth Heyes (PortSwigger) et propose des pistes concrètes pour renforcer la sécurité de votre webmail.
Comprendre le principe des attaques CSS cross-boundary
Les webmails modernes appliquent des filtres de sécurité (sanitizers) pour neutraliser le code HTML et CSS potentiellement dangereux contenu dans les emails. L’idée est d’empêcher tout élément d’interagir avec l’interface du webmail lui-même. Pourtant, les recherches de Gareth Heyes montrent qu’il existe deux grandes voies pour contourner cette protection :
- Abuser des fonctionnalités CSS et HTML autorisées : certains éléments, comme les balises
<label>,<select>ou les images, sont conservés par le sanitizer mais peuvent être détournés pour agir en dehors de la zone du message. - Créer une divergence entre ce que le sanitizer approuve et ce que le navigateur interprète : des attributs personnalisés, des mutations CSS ou des différences de parsing permettent de faire entrer du code interdit après la validation.
Dans les deux cas, l’attaquant parvient à briser l’isolation et à injecter du contenu ou du style qui s’applique à l’interface du webmail. Une fois cette brèche ouverte, les possibilités sont nombreuses : capture de frappe, exfiltration de jetons, détournement de clics, ou encore manipulation d’outils d’intelligence artificielle connectés à la boîte mail.
« Le contenu d’un email ne devrait jamais pouvoir influencer le fonctionnement du webmail lui-même. Pourtant, nous avons trouvé des chaînes d’attaque complètes qui le permettent. » - Gareth Heyes, chercheur chez PortSwigger.
Les principales chaînes d’attaque dévoilées
Outlook / Firefox : capture de mot de passe en temps réel
La chaîne la plus spectaculaire cible Outlook sous Firefox. Elle combine plusieurs techniques :
- Label jacking : l’élément
<label>peut être associé à un champ situé en dehors du message, ce qui permet de rediriger un clic vers un contrôle externe. - Attributs personnalisés transformés en nœuds DOM : le sanitizer d’Outlook autorise certains attributs
data-*; le JavaScript de l’application les convertit ensuite en nouveaux éléments DOM portant du CSS non filtré. - Parsing des media queries : une astuce de syntaxe fait que le navigateur interprète des règles CSS que le sanitizer n’a pas détectées.
L’attaquant crée un email contenant un élément <select> déguisé en champ de mot de passe. Grâce au label jacking, le clic de la victime active ce <select> hors de la zone du message. Firefox réinitialise le délai d’environ une seconde pour valider l’option lorsque l’élément disparaît de l’écran, ce qui permet une capture quasi instantanée des choix de l’utilisateur. En pratique, la victime croit saisir son mot de passe Microsoft dans un écran de connexion légitime, mais elle interagit en réalité avec un <select> contrôlé par l’attaquant.
Yahoo Mail / AOL Mail : la technique du « paste race »
Une autre voie exploite le collage de contenu HTML dans l’éditeur de brouillon. Sur Firefox, le HTML collé conserve temporairement ses styles CSS actifs avant que le sanitizer ne les neutralise. Cette fenêtre de quelques millisecondes suffit à l’attaquant pour exfiltrer des informations.
La démonstration cible Medium : l’attaquant initie un flux de connexion par email, puis place dans le presse-papier un code CSS spécial. La victime, sans se méfier, colle ce contenu dans un brouillon Yahoo ou AOL. Les requêtes émises pendant cette phase révèlent suffisamment de caractères du jeton de connexion (12 caractères) pour que le serveur de l’attaquant puisse le reconstituer et se connecter au compte Medium de la victime.
« Le simple fait de coller du contenu dans un webmail peut exposer un jeton d’authentification. » - Extrait du document de recherche.
Gmail / Claude Cowork : exfiltration de jeton Slack via l’IA
L’intégration des assistants IA dans les webmails ouvre une nouvelle surface d’attaque. Les chercheurs ont exploité la propriété image-set() de CSS pour déclencher une requête externe malgré le filtrage de Gmail. En enchaînant avec une injection indirecte de prompt, ils ont fait en sorte que l’assistant Claude Cowork (Anthropic) traite un email contenant des instructions cachées.
Le scénario :
- L’attaquant envoie un email déclenchant un email de confirmation de jeton Slack.
- La victime demande à Cowork de traiter ses emails.
- Les instructions injectées dans l’email piégé ordonnent à l’IA de récupérer le jeton Slack et de le placer dans un brouillon HTML.
- Lorsque la victime consulte ce brouillon, le jeton est exfiltré via une requête
image-set().
Cette attaque montre que les assistants IA connectés à la messagerie peuvent être manipulés pour exécuter des actions non prévues, même sans faille directe dans le webmail.
Fastmail et Proton Mail : d’autres vulnérabilités
Fastmail a été confronté à deux bugs de mutation CSS corrigés après la divulgation. L’un d’eux, appelé « CSS hotwiring », permettait de rediriger des clics vers des actions inattendues en plusieurs étapes. Une autre faille utilisait une barre oblique inverse échappée pour contourner le proxy d’images de Fastmail, en s’appuyant sur un domaine autorisé (user.fm) pour signaler quand un email était ouvert.
Proton Mail, de son côté, exposait l’adresse IP du destinataire via un vecteur spécifique. Proton a depuis mis à jour sa documentation sur la protection des traqueurs, mais la démonstration initiale fonctionnait encore au moment de la publication.
Méthodes de contournement des filtres et sanitizers
Mutation CSS et différences de parsing
Les sanitizers de webmail sont souvent écrits en PHP, Python ou JavaScript, tandis que le navigateur interprète le code final. Un décalage entre les deux peut être exploité. Par exemple, une règle CSS écrite de manière ambiguë peut être rejetée par le sanitizer mais comprise par le navigateur. Les media queries sont particulièrement propices à ce genre de détournement.
L’exfiltration par clic malgré la CSP
Même lorsque la Content Security Policy (CSP) bloque les requêtes externes, il est possible d’exfiltrer des données via des clics. Si l’attaquant peut injecter du style et qu’un jeton numérique est affiché sous forme de texte dans l’email, le CSS peut déterminer quels chiffres sont présents et leur fréquence, masquer les liens qui ne correspondent pas, et ne laisser visible que le lien pointant vers la combinaison correcte. Un clic de la victime envoie alors les chiffres au serveur de l’attaquant.
Le tableau comparatif des techniques
| Webmail | Technique principale | Impact | État au 6 août 2026 |
|---|---|---|---|
| Outlook (Firefox) | Label jacking + media queries + attributs personnalisés | Capture de mot de passe | Non corrigé (chaîne complète) |
| Yahoo / AOL | Paste race (collage CSS actif) | Vol de jeton de connexion | Non corrigé |
| Gmail | image-set() + prompt injection (Cowork) | Exfiltration de jeton Slack | image-set() contourné, chaîne fonctionnelle |
| Fastmail | Mutation CSS + hotwiring | Redirection de clics, ouverture d’email | Deux bugs corrigés |
| Proton Mail | Vecteur IP via CSS | Exposition de l’adresse IP | Proxy bypass désactivé |
| Fastmail (Atlas) | CSS pseudo-éléments + opacité | Manipulation d’IA (Atlas) | Atlas arrêté le 9 août 2026 |
Recommandations pour se protéger
Face à ces attaques, la recherche propose plusieurs mesures défensives, que les webmails comme les utilisateurs peuvent mettre en œuvre.
Pour les fournisseurs de webmail
- Isoler le contenu HTML des emails dans des iframes sandboxées : l’email ne doit jamais partager le même contexte DOM que l’interface du webmail. Une iframe avec l’attribut
sandboxempêche toute interaction avec la page parente. - Restreindre strictement les éléments CSS autorisés : établir une liste blanche de propriétés, de sélecteurs et de valeurs. Bloquer les
media queries, lescustom properties, lesattr()et les fonctions commeimage-set(). - Vérifier la présence de « CSS gadgets » avant d’autoriser des attributs personnalisés : certains attributs
data-*peuvent être transformés en nœuds DOM par le JavaScript de l’application. Il faut les neutraliser ou les supprimer. - Interdire les éléments
<select>et les sélecteurs dangereux : les<select>peuvent être détournés pour capturer des choix. Les sélecteurs comme:has(),:is(),:where()offrent trop de flexibilité. - Empêcher les requêtes d’images vers des domaines contrôlés par l’attaquant : les politiques CSP doivent être strictes et ne pas autoriser de domaines sauvages. Les proxys d’images doivent être configurés pour ne pas révéler d’informations.
Pour les utilisateurs
- Utiliser un navigateur récent : certaines attaques (paste race) sont spécifiques à Firefox. Toutefois, la diversité des vecteurs rend illusoire une protection par le seul choix du navigateur.
- Désactiver l’affichage automatique des images : dans les paramètres de votre webmail, choisissez de ne charger les images que sur demande. Cela limite les possibilités d’exfiltration.
- Éviter de coller du contenu inconnu dans un brouillon : si vous copiez du texte depuis une source non fiable, utilisez un éditeur de texte brut avant de le coller dans l’email.
- Ne pas connecter d’assistant IA à votre messagerie professionnelle : tant que les mécanismes d’isolation ne sont pas matures, l’accès d’un IA à vos emails représente un risque.
Exemple de configuration d’iframe sandboxée
<iframe src="/email-content" sandbox="allow-same-origin allow-scripts"></iframe>
Attention :
allow-same-originpeut être dangereux si l’iframe charge du contenu non fiable. Préférezsandbox=""(aucun privilège) et utilisezpostMessagepour les interactions nécessaires.
Conclusion : vers une isolation stricte du contenu email
Les attaques CSS contre les webmails ne sont pas de simples démonstrations théoriques. Elles montrent que la frontière entre un email et l’interface qui l’affiche est plus poreuse qu’on ne le pensait. En 2026, alors que l’IA s’invite dans les boîtes mail et que les webmails sont utilisés quotidiennement pour des opérations sensibles, ces vulnérabilités doivent être prises au sérieux.
Les fournisseurs doivent revoir leur approche de la sanitisation : plutôt que de filtrer le contenu a posteriori, il faut l’isoler dans un environnement totalement séparé. Les utilisateurs, de leur côté, doivent adopter des réflexes de prudence, notamment face aux emails contenant des éléments interactifs.
La recherche de Gareth Heyes et Pete Hendy (PortSwigger) a déjà conduit à des correctifs chez Fastmail et Proton Mail. Espérons que les autres acteurs suivront rapidement, avant que ces techniques ne soient reprises par des acteurs malveillants. En attendant, restez vigilant : un email peut cacher bien plus qu’un simple message.