Moderne SVG-Clickjacking-Angriffe zum Täuschen von Nutzern und Umgehen von Warnhinweisen
(lyra.horse)- Eine neue auf SVG-Filtern basierende Clickjacking-Methode wurde vorgestellt und erweitert den bisherigen einfachen Clickjacking-Angriff zu komplexen interaktiven Angriffen.
- Es wurde bestätigt, dass SVG-Filterelemente wie
feColorMatrixundfeDisplacementMapauch auf Cross-Origin-iframes anwendbar sind, wodurch visuelle Manipulationen und Datenextraktion möglich werden. - Mit Filterkombinationen sind Pixellesen, logische Operationen und bedingte UI-Steuerung möglich, wodurch mehrstufige Clickjacking- oder Eingabeaufforderungsangriffe umgesetzt werden können.
- Als reales Beispiel wurde ein Angriff über eine Google-Docs-Schwachstelle erfolgreich ausgeführt; der Forscher erhielt von Google VRP eine Belohnung von $3133.70.
- Diese Technik zeigt eine neue Angriffsfläche im Browser-Sicherheitsmodell auf und beweist, dass die logische Nutzung von SVG-Filtern zu einer Sicherheitsbedrohung werden kann.
Überblick über SVG-Clickjacking
- Klassisches Clickjacking ist ein einfaches Angriffsmuster, bei dem ein iframe überlagert wird, damit Nutzer unbeabsichtigt klicken.
- Das neue SVG-Clickjacking macht durch den Einsatz von SVG-Filtern komplexe Interaktionen und Datenabfluss möglich.
- Filter wie
feColorMatrixundfeDisplacementMapsind auf Cross-Origin-Dokumente anwendbar, sodass externer Inhalt visuell manipuliert werden kann.
Komponenten von SVG-Filtern
- Zu den zentralen Filterelementen gehören
<feImage>,<feFlood>,<feOffset>,<feDisplacementMap>,<feGaussianBlur>,<feTile>,<feMorphology>,<feBlend>,<feComposite>und<feColorMatrix>. - Sie kombinieren und transformieren Eingabebilder, um neue Bilder zu erzeugen und können als Kette verknüpft werden.
- Durch solche Kombinationen kann ein Angreifer visuelle Effekte, Maskierung und Farbanpassungen flexibel umsetzen.
Angriffsbeispiele
- Fake Captcha: Mit
feDisplacementMapwird Text verzerrt, um Nutzer zur Eingabe sensibler Codes zu verleiten. - Grey-Text-Hiding:
feCompositeundfeMorphologyentfernen Hinweise oder Fehlermeldungen in Eingabefeldern, damit Nutzer ein vom Angreifer vorgegebenes Passwort eingeben. - Pixel Reading: Durch das Erkennen der Farbe bestimmter Pixel kann das Filterverhalten gesteuert werden; so werden dynamische reaktive Angriffe wie Erkennung von Button-Klicks, Hover-Status oder Eingabestatus realisiert.
Logische Operationen und kombinierte Angriffe
- Durch Kombination von
feBlendundfeCompositesind **AND-, OR-, XOR- und NOT-**Logikgatter implementierbar. - So kann innerhalb der SVG-Filter eine vollständige Logikschaltung aufgebaut werden, wodurch mehrstufige Clickjacking-Szenarien automatisiert werden können.
- Im Beispiel des Securify-App-Angriffs wurde ein Ablauf umgesetzt, der das Öffnen von Dialogen, das Anklicken von Checkboxen und das Klicken auf Buttons durch mehrere Logikschritte hinweg steuert, um Nutzer zu täuschen.
Konkreter Fall: Google Docs-Schwachstelle
- Bei Google Docs wurde nach dem Klick auf „Generate Document“ das erscheinende Popup und das Eingabefeld durch SVG-Filter-basierte Logik erkannt und manipuliert.
- Fokusstatus des Eingabefelds, grauer Text und Ladebildschirme wurden in Echtzeit erkannt, um den Angriffsfluss zu steuern.
- Dieser Angriff wurde an Google gemeldet und mit einer Bug Bounty von $3133.70 belohnt.
QR-Code-Anwendungen
- Innerhalb von SVG-Filtern kann QR-Code-Generierung implementiert werden, sodass Pixeldaten in eine URL kodiert und als QR-Code ausgegeben werden.
- Wird der QR-Code gescannt, werden Daten an einen vom Angreifer kontrollierten Server übertragen.
- Mit
feDisplacementMapund der Reed–Solomon-Fehlerkorrektur werden scannbare QR-Codes erzeugt.
Zusätzliche Angriffsmöglichkeiten
- Textlesen, click-basierter Datenabfluss, Einfügen eines Fake-Mauszeigers und weitere missbräuchliche Anwendungen sind möglich.
- Angriffe lassen sich auch ohne JavaScript nur mit CSS/SVG realisieren, wodurch eine Umgehung von CSP denkbar ist.
Wissenschaftliche Bedeutung
- Logikbasierte Clickjacking-Techniken mit SVG-Filtern sind ein neuer Angrifftyp, der in früheren Arbeiten nicht behandelt wurde.
- Frühere Forschungen erwähnten SVG nur als reines visuelles Maskierungsmittel; diese Studie zeigt jedoch logische Ausführung und Interaktionssteuerung.
- Der Forscher stellt dies als neue Schwachstellenklasse vor und betont, dass das Browser-Sicherheitsmodell neu bewertet werden muss.
Abschluss
- Diese Arbeit wird als erster Sicherheitsangriff eingestuft, der SVG-Filter wie eine Programmiersprache nutzt.
- Der Autor plant Präsentationen zu diesem Thema Ende 2025 auf 39c3 und Disobey 2026.
- Der Beitrag wurde mit nur 42kB HTML/CSS/SVG ohne Bilder oder JS erstellt und demonstriert die Kreativität experimenteller Sicherheitsforschung.
1 Kommentare
Hacker-News-Kommentare
Wenn Entwickler den X-Frame-Options-Header korrekt setzen, lässt sich dieses Problem beheben
Aber realistisch gesehen wird man wohl eher Sicherheitsprobleme jagen, indem man im Browser die Hälfte der SVG-Spezifikation entfernt
Außerdem ist ein solcher Angriff auch auf Websites möglich, die statt Framing HTML-Injection erlauben
Ich habe SVG aus Sicherheitsgründen bereits deaktiviert
Inzwischen frage ich mich allerdings, ob man nicht sogar CSS deaktivieren sollte
Es wäre schön gewesen, wenn CSS bei der reinen Textgestaltung geblieben wäre, aber inzwischen hat es sich in eine Art Programmiersprache verwandelt, die Hacker oder Werbetreibende leicht missbrauchen können
Heute ist das fast unmöglich
Beim Beispiel „Erkennen, ob ein Pixel reines Schwarz ist, um den Filter ein- oder auszuschalten“ war ich völlig verwirrt
Ich verstehe nicht, warum HTML/CSS so komplex geworden ist
Es gibt ein verstecktes
<checkbox>und ein<label>; beim Klicken wird die Checkbox umgeschaltet, und nur mit CSS ändert sich der Stil je nach ZustandDas SVG zeichnet tatsächlich gar nichts, sondern definiert nur Filter
Dass sogar zwei
<feTile>verwendet werden, um den Kachelbereich und den Ausgabebereich getrennt zu definieren, wirkt ebenfalls seltsamUnd was sind überhaupt Elemente wie
<fake-frame>oder<art-frame>?Dass beim Klick auf ein
<label>die Checkbox umgeschaltet wird, ist Standardverhalten von HTMLMit dem CSS-Selektor
:has()wird der Zustand erkannt<feTile>ist ein einzelnes Filterelement, das zum Kacheln oder Zuschneiden eines Eingabebilds verwendet wird<fake-frame>und<art-frame>sind selbst definierte Custom ElementsIch habe das Thema in einem Blogbeitrag zusammengefasst
Dass beim Klick auf ein
<label>der Fokus wechselt, folgt der Tradition von Desktop-UIsAuch das Ändern des Stils je nach Checkbox-Zustand gab es schon zu Firefox-1-Zeiten
SVG-Filter direkt in HTML einzubetten ist ebenfalls eine alte Funktion
Das ist also weniger ein Problem von neuem HTML als vielmehr eine Kombination alter Funktionen
Diese Demo hat mich an frühere Flash-Player-Hacks erinnert
Das ist ähnlich wie damals, als Nutzer dazu verleitet wurden, Systemspeicher freizugeben
Vektorgrafiken wirken wirklich wie etwas, das sich selbst nicht im Griff hat
Der SVG adder ist wie ein Kunstwerk. Wirklich großartig
Dazu habe ich auf einen Stack-Overflow-Beitrag verwiesen
In meinem Android-Chrome, genauer gesagt im Kiwi-Browser, wirkt die Anzeige wegen des Dark Mode kaputt oder seltsam dargestellt
Ich frage mich, ob andere dasselbe beobachten
Dieser Artikel hat mich an die frühere CSS-Rechendemonstration erinnert
Wirklich beeindruckende Arbeit. Ich weiß nicht, wie man das beheben sollte, aber das muss bald gefixt werden
Das war ein großartiger Post. Ich hatte beim Lesen durchgehend Spaß