🔍 Contexte
Publié le 6 août 2026 par Gareth Heyes (PortSwigger Research), cet article de recherche technique présente une série de techniques d’attaque exploitant le rendu CSS dans les clients webmail. Les cibles étudiées incluent Yahoo Mail, AOL Mail, Fastmail, ProtonMail, Gmail et Outlook.
🎯 Techniques d’attaque principales
Abus des éléments HTML/CSS autorisés
- Détournement de balises
<label>: les attributsforpermettent de déclencher des actions UI arbitraires (ex: épingler un message dans Outlook, ouvrir le ruban). Vulnérabilité non corrigée par Microsoft. - Injection de prompt indirect via CSS : utilisation des pseudo-éléments
:before/:afterpour masquer du texte aux victimes humaines tout en le rendant visible aux LLM (navigateur IA OpenAI Atlas), permettant l’exfiltration du nom de la victime via des onglets ouverts automatiquement.
Exfiltration de tokens par CSS
- Race condition lors du collage dans un brouillon (AOL Mail, Yahoo Mail) : du HTML/CSS malveillant dans le presse-papiers est injecté sans sanitization correcte sous Firefox.
- Vol de token Medium (12 caractères hex) : via des sélecteurs d’attributs CSS imbriqués (
^=,*=,$=) et du CSS nesting pour réduire la taille du payload. Technique permettant de reconstituer le token complet côté serveur. - Exfiltration sans requêtes externes (CSP strict) : utilisation d’oracles de hauteur de police (
@font-face+descent-override), d’animations CSS et de la propriétéinsetpour forcer un clic sur un lien encodant les digits du token.
Contournements de proxy d’image
- Fastmail :
content:url(/\5c/user.fm/...)— le sanitizer croit que l’URL est relative, le navigateur résout versuser.fm. - ProtonMail : imbrication de
Url(dans un commentaire CSS pour tromper le sanitizer et exposer l’IP de la victime. - Gmail :
background:image-set(var(--x,'//02.rs'))— le fallback de variable CSS contourne la sanitization.
Mutation CSS (Fastmail)
- Mutation via CSSOM : les noms de keyframes et media queries contenant des escapes hex (
\7d\2a) sont décodés par Chrome lors de la lecture CSSOM, produisant des sélecteurs arbitraires (}*{color:red}). - Deux bugs corrigés par Fastmail, chacun récompensé par 1000$ de bounty.
CSS Gadgets (Outlook)
- Gadgets CSS : des attributs
data-*autorisés par le sanitizer déclenchent une manipulation DOM par une bibliothèque JS tierce, injectantposition:fixedhors de la liste blanche. - Permet de déface Outlook et de sortir des limites du message.
CSS Hotwiring (Fastmail)
- Technique permettant de forcer un clic sur une action UI spécifique (ex: marquer comme VIP) lorsque la victime clique n’importe où sur la page, via
:before/:afteravecposition:fixedetz-indexélevé.
Keylogger CSS (Outlook)
- Keylogger via
<select>et sélecteurs CSS (option+option:checked,:has(),:checked) combiné au gadget CSSposition:fixedpour spoofier l’écran de connexion Outlook. - Keylogger temps réel (Firefox) : exploitation d’un comportement Firefox qui réinitialise le timer du
<select>lors d’un déplacement hors écran via animation CSS. - Bypass du sanitizer Outlook : injection via
@media --narrow-window;/*"*/.xyz{position:fixed}— le sanitizer traite le sélecteur comme faisant partie de la media query.
Exfiltration via prompt injection + Gmail bypass (Cowork/Slack)
- Collaboration avec Pete Hendy : email piégé convainquant l’IA Cowork (connecteur Gmail) de créer un brouillon contenant du CSS exfiltrant un token Slack via le bypass Gmail (
image-set(var(...))).
🔮 Attaques futures décrites
- Keylogger HTML-only (Chrome) : via l’élément
<selectedcontent>et images lazy-loaded. - Keylogger temps réel Chrome : via l’attribut
interestfor(interest invokers) pour chaîner des<select>popovers.
📋 Type d’article
Publication de recherche offensive détaillée, présentant des techniques CTI exploitables contre des webmails grand public et des clients IA, avec preuves de concept et code source disponible sur GitHub.
🧠 TTPs et IOCs détectés
TTP
- T1185 — Browser Session Hijacking (Collection)
- T1056.001 — Input Capture: Keylogging (Collection)
- T1539 — Steal Web Session Cookie (Credential Access)
- T1659 — Content Injection (Impact)
- T1557 — Adversary-in-the-Middle (Credential Access)
- T1598 — Phishing for Information (Reconnaissance)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
Malware / Outils
- DOMPurify (tool)
🟡 Indice de vérification factuelle : 50/100 (moyenne)
- ⬜ portswigger.net — source non référencée (0pts)
- ✅ 60997 chars — texte complet (fulltext extrait) (15pts)
- ✅ 10 IOCs (IPs/domaines/CVEs) (10pts)
- ⬜ 0/4 IOCs confirmés externellement (0pts)
- ✅ 8 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://portswigger.net/research/css-the-bomb-inside-your-inbox