- Une nouvelle technique de clickjacking basée sur les filtres SVG a été proposée, étendant les attaques classiques de clic forcé en attaques interactives plus complexes
- Les éléments de filtre SVG tels que
feColorMatrix, feDisplacementMap et autres peuvent être appliqués à des iframes cross-origin, ce qui rend possibles des manipulations visuelles et l’exfiltration de données
- En combinant ces filtres, des opérations de lecture de pixels, de logique et de manipulation d’interface conditionnelle deviennent possibles, permettant des scénarios de clickjacking multi-étapes ou d’incitation de saisie
- Un cas réel a prouvé l’attaque via une vulnérabilité de Google Docs, pour laquelle le chercheur a reçu une récompense de 3133,70 $ du programme Google VRP
- Cette technique met au jour une nouvelle surface d’attaque dans le modèle de sécurité des navigateurs et montre comment l’usage logique des filtres SVG peut devenir une menace
Vue d'ensemble du clickjacking SVG
- Le clickjacking traditionnel consiste à superposer une iframe pour pousser un utilisateur à cliquer sans le vouloir
- Le clickjacking SVG récemment proposé exploite des filtres SVG pour permettre des interactions et des fuites de données plus complexes
- Des filtres comme
feColorMatrix et feDisplacementMap s’appliquent aussi aux documents cross-origin, permettant de manipuler visuellement du contenu externe
Composition des filtres SVG
- Les principaux éléments de filtre sont
<feImage>, <feFlood>, <feOffset>, <feDisplacementMap>, <feGaussianBlur>, <feTile>, <feMorphology>, <feBlend>, <feComposite>, **<feColorMatrix>
- Ils combinent et transforment des images d’entrée pour produire de nouvelles images, et peuvent être chaînés entre eux
- Cette combinaison offre une grande liberté pour implémenter des effets visuels, masquages et manipulations de couleurs
Exemples d'attaque
- Fausse captcha : utilisation de
feDisplacementMap pour déformer du texte et amener l’utilisateur à entrer un code sensible
- Masquage de texte gris (grey text hiding) : suppression d’indices et de messages d’erreur dans les champs via
feComposite et feMorphology, afin d’inciter l’utilisateur à saisir le mot de passe choisi par l’attaquant
- Lecture de pixels : détection de la couleur de pixels précis pour contrôler le comportement des filtres, permettant des attaques réactives détectant clics, survols et état des saisies
Logique booléenne et attaques composées
- En combinant
feBlend et feComposite, il est possible d’implémenter des portes logiques telles que AND, OR, XOR, NOT
- Cela permet de construire une circuiterie logique complète directement dans le filtre SVG et d’automatiser des scénarios de clickjacking en plusieurs étapes
- Dans l’exemple d’attaque de l’application Securify, l’ouverture de boîtes de dialogue, les clics sur cases à cocher et les clics sur boutons sont contrôlés de façon logique pour tromper l’utilisateur
Cas réel : vulnérabilité Google Docs
- Détection et manipulation via la logique de filtre SVG des popups et champs de saisie apparus après un clic sur le bouton « Generate Document » de Google Docs
- L’état de focus des champs, les textes gris et les écrans de chargement sont détectés en temps réel pour piloter le déroulement de l’attaque
- Cette attaque a été signalée à Google et a donné lieu à une prime de bug bounty de 3133,70 $
Application aux QR codes
- Une logique de génération de QR code peut être implémentée dans un filtre SVG, en encodant des données de pixels puis en les affichant sous forme de code QR
- Quand l’utilisateur scanne le QR code, les données sont envoyées au serveur contrôlé par l’attaquant
- L’usage de
feDisplacementMap et de la correction d’erreur Reed–Solomon permet de générer des QR codes lisibles
Potentiel d’usages supplémentaires
- Des usages variés sont possibles, comme la lecture de texte, l’exfiltration de données basée sur les clics, l’insertion de faux curseurs de souris
- Les attaques peuvent être mises en place sans JavaScript, avec seulement CSS/SVG, ce qui laisse entrevoir des possibilités de contournement du CSP
Intérêt de la recherche
- Le clickjacking logique basé sur les filtres SVG est une nouvelle technique non couverte par les travaux antérieurs
- Les travaux précédents présentaient SVG comme un simple outil de dissimulation visuelle ; cette recherche démontre au contraire l’exécution logique et le contrôle d’interactions
- L’auteur la présente comme une nouvelle classe de vulnérabilité, insistant sur la nécessité de revoir les mécanismes de sécurité des navigateurs
Conclusion
- Cette recherche est saluée comme le premier cas d’attaque de sécurité exploitant des filtres SVG comme un langage de programmation
- L’auteur prévoit d’en parler à la fin de 2025 lors de 39c3 et Disobey 2026
- Le billet a été rédigé avec 42 Ko de HTML/CSS/SVG uniquement, sans images ni JS, montrant la créativité possible en recherche de sécurité expérimentale
Aucun commentaire pour le moment.