HTML-E-Mails sind seit vielen Jahren wenn nicht sogar bereits Jahrzehnten Standard. Damit Newsletter, Rechnungen oder andere Nachrichten nicht ausschließlich aus einfachem Text bestehen, unterstützen E-Mail-Clients neben HTML auch Teile von CSS. Gleichzeitig dürfen Absender natürlich nicht beliebigen aktiven Code im Kontext des E-Mail-Clients ausführen.

Webmail-Anbieter stehen deshalb vor einer schwierigen Aufgabe: Sie müssen nicht vertrauenswürdiges HTML und CSS innerhalb ihrer eigenen Webanwendung darstellen, ohne dass der Inhalt einer E-Mail auf andere Bestandteile der Anwendung zugreifen oder diese verändern kann.

Üblicherweise übernehmen sogenannte HTML- und CSS-Sanitizer diese Aufgabe. Sie entfernen beispielsweise nicht erlaubte HTML-Elemente, Attribute oder CSS-Eigenschaften. JavaScript wird in E-Mails ohnehin normalerweise nicht ausgeführt.

Dass CSS trotzdem ein relevanter Angriffsvektor sein kann, zeigt eine im August 2026 veröffentlichte Untersuchung des PortSwigger-Researchers Gareth Heyes. Untersucht wurden unter anderem Outlook, Gmail, Yahoo Mail, AOL Mail, Fastmail und Proton Mail. Dabei wurden verschiedene Möglichkeiten gefunden, mit eigentlich zulässigem HTML und CSS Sicherheitsmechanismen zu umgehen.

Das eigentliche Problem: zwei unterschiedliche Interpretationen

Ein wesentlicher Teil des Problems liegt nicht unbedingt darin, dass ein E-Mail-Anbieter eine offensichtlich gefährliche CSS-Eigenschaft erlaubt. Wichtiger sind Unterschiede zwischen dem Sanitizer und dem Browser.

Der Sanitizer erhält beispielsweise einen CSS Ausdruck und bewertet ihn als ungefährlich. Anschließend interpretiert der Browser denselben Ausdruck jedoch etwas anders. Gerade CSS besitzt zahlreiche Besonderheiten hinsichtlich Escaping, Kommentaren, URLs und der Behandlung ungültiger oder ungewöhnlicher Syntax.

PortSwigger konnte beispielsweise zeigen, dass CSS Escapes dazu führen können, dass eine URL für einen Filter wie eine relative URL aussieht, während der Browser daraus eine Verbindung zu einem externen System erzeugt. Auch alternative CSS-Funktionen für Bilder können dafür relevant sein.

Das ist grundsätzlich kein neues Problem in der Web Security: Immer wenn zwei Parser dieselben Daten unterschiedlich interpretieren, können Sicherheitskontrollen umgangen werden. Bei Webmail ist die Situation jedoch besonders interessant, weil nicht vertrauenswürdiger Inhalt direkt innerhalb einer bereits authentifizierten Anwendung angezeigt wird.

Externe Requests trotz Filterung

CSS kann externe Ressourcen laden. Das offensichtlichste Beispiel ist ein Hintergrundbild:

background-image: url("https://example.org/image.png");

E-Mail-Anbieter versuchen solche Requests häufig zu kontrollieren. Ein verbreitetes Verfahren sind Image-Proxies. Dabei lädt nicht der Browser des Empfängers das Bild direkt vom Server des Absenders. Stattdessen ruft zunächst ein Server des Mailanbieters das Bild ab und liefert es anschließend an den Benutzer aus. Oft wird diese Funktion auch zum Caching genutzt.

Das schützt unter anderem die IP-Adresse des Empfängers und erschwert die Erkennung, ob und wann eine bestimmte Nachricht geöffnet wurde.

PortSwigger fand jedoch unterschiedliche Möglichkeiten, solche Mechanismen zu umgehen. Bei Fastmail konnte CSS so interpretiert werden, dass der Sanitizer eine URL als relativ betrachtete, während der Browser daraus eine andere Anfrage erzeugte. Auch für Proton Mail und Gmail wurden während der Untersuchung unterschiedliche Varianten gefunden, mit denen sich die vorgesehene Behandlung externer Ressourcen umgehen ließ.

Damit wird CSS zunächst zu einem Informationskanal: Bestimmte Bedingungen können darüber entscheiden, ob eine Ressource vom Server des Angreifers geladen wird.

Daten mit CSS auslesen

Interessanter wird dieser Mechanismus in Kombination mit CSS-Selektoren. CSS kann Elemente abhängig von ihren Eigenschaften auswählen. Ein sogenannter Attribute Selector kann beispielsweise prüfen, ob der Wert eines HTML-Attributes mit einer bestimmten Zeichenfolge beginnt oder eine bestimmte Zeichenfolge enthält.

Der Browser kennt dabei den tatsächlichen Wert des Attributes. Trifft eine CSS-Regel zu und führt diese Regel anschließend zum Laden einer externen Ressource, lässt sich das Ergebnis der Prüfung außerhalb des Browsers beobachten.

PortSwigger demonstrierte dieses Prinzip unter anderem anhand von Login-Tokens. Durch zahlreiche CSS-Regeln konnten Stück für Stück Informationen über einen vorhandenen Token gewonnen werden. In einem untersuchten Szenario reichte dies letztlich aus, um einen Login-Token zu rekonstruieren.

CSS „liest“ den Token dabei nicht auf dieselbe Weise wie JavaScript. Stattdessen werden verschiedene Bedingungen formuliert und das Ergebnis über unterschiedliche Requests nach außen signalisiert. Dieses Prinzip wird allgemein als CSS Exfiltration bezeichnet.

Wenn die E-Mail die Oberfläche des Webmailers beeinflusst

Noch problematischer wird es, wenn CSS nicht auf den eigentlichen Nachrichtenbereich begrenzt bleibt. Genau diese Trennung ist für einen Webmailer wichtig: Das CSS einer Nachricht sollte deren Darstellung verändern dürfen, aber beispielsweise nicht den Löschen-Button, die Navigation oder andere Teile der Oberfläche.

PortSwigger fand bei Fastmail eine interessante Variante dieses Problems im Zusammenspiel mit dem CSS Object Model (CSSOM). Der Dienst veränderte Selektoren, damit Styles einer E-Mail nur innerhalb ihres vorgesehenen Bereichs gelten. Durch Transformationen des Browsers konnten jedoch zunächst ungefährlich erscheinende CSS-Ausdrücke nach der Verarbeitung eine andere Bedeutung erhalten. Dadurch konnte CSS aus dem vorgesehenen Bereich ausbrechen. Die entsprechenden Fehler wurden laut PortSwigger anschließend von Fastmail behoben.

Bei Outlook fand Heyes einen anderen Mechanismus. Dort konnten bestimmte erlaubte HTML-Attribute dazu führen, dass bereits vorhandener JavaScript-Code der Anwendung zusätzliche DOM-Elemente erzeugte. PortSwigger bezeichnet solche nutzbaren Bestandteile der Anwendung als „CSS Gadgets“. Über sie konnten Eigenschaften verwendet werden, die der eigentliche CSS-Filter nicht zugelassen hätte.

Damit wurden beispielsweise Veränderungen außerhalb des eigentlichen E-Mail-Inhalts möglich.

Kann CSS wirklich Passwörter stehlen?

Eine der auffälligsten Demonstrationen der Untersuchung ist ein Passwortdiebstahl innerhalb von Outlook. Dabei handelt es sich allerdings nicht darum, dass CSS einfach den Inhalt eines normalen Passwortfeldes ausliest. Genau das funktioniert nicht. Stattdessen kombinierte Heyes mehrere Browser- und CSS-Eigenschaften miteinander und erzeugte innerhalb der Webmail-Oberfläche eine nachgebildete Microsoft-Anmeldemaske. Die Eingabe wurde über speziell präparierte HTML-Elemente und CSS-Zustände ausgewertet. Externe Requests konnten anschließend Informationen über eingegebene Zeichen übertragen.

Für einen erfolgreichen Angriff müssen damit mehrere Voraussetzungen zusammenkommen. Trotzdem zeigt die Demonstration, dass die Sicherheitsannahme „Es ist nur CSS, also kann nicht viel passieren“ zu kurz greift.

Was lässt sich daraus ableiten?

Die Untersuchung bedeutet nicht, dass HTML-E-Mails grundsätzlich unsicher sind oder dass ein Angreifer mit beliebigem CSS automatisch Zugriff auf ein Postfach erhält.

Sie zeigt vielmehr, wie schwierig es ist, nicht vertrauenswürdiges HTML und CSS sicher innerhalb einer vertrauenswürdigen Webanwendung darzustellen.

PortSwigger empfiehlt deshalb insbesondere eine möglichst starke Isolation des E-Mail-Inhalts, beispielsweise durch entsprechend sandboxed iframes. Zusätzlich sollten CSS- und HTML-Funktionen möglichst restriktiv freigegeben, externe Ressourcen über kontrollierte Proxies geladen und potenziell problematische Selektoren oder HTML-Elemente nicht zugelassen werden.

Interessant ist die Forschung vor allem deshalb, weil CSS häufig eher als Gestaltungssprache denn als sicherheitsrelevanter Bestandteil einer Anwendung betrachtet wird. Moderne CSS-Funktionen können jedoch Bedingungen auswerten, Elemente abhängig von ihrem Zustand verändern, externe Ressourcen laden und komplex auf Benutzerinteraktionen reagieren.

In einer normalen Webseite ist das zunächst gewünschte Funktionalität. Wird fremdes CSS jedoch innerhalb einer bereits authentifizierten Webmail-Anwendung ausgeführt, können genau diese Eigenschaften unerwartete Sicherheitsfolgen haben.

Quelle

Grundlage dieses Artikels ist die von Gareth Heyes auf der Black Hat USA 2026 vorgestellte PortSwigger-Untersuchung „CSS: the bomb inside your inbox“, veröffentlicht am 6. August 2026. PortSwigger stellt zu der Untersuchung zusätzlich Proof-of-Concepts und weitere Materialien bereit.