Site de démonstration favicon - une petite icône .ico 16 * 16 ou 32 * 32 pixels sur un onglet du navigateur. Vous aide à parcourir des centaines d'onglets. Twitter a un oiseau bleu, Gmail a un symbole de courrier rouge, Wikipedia a un W en gras,
mais il s'avère que ces icônes représentent une vulnérabilité à travers laquelle vous pouvez effectuer une empreinte digitale - pour identifier l'utilisateur même via VPN et mode incognito dans le navigateur ( voir démo ).
Le programmeur allemand Jonas Strehle dans le référentiel Github décrit une méthode pour installer un super cookie non amovible via des favicons: «Les super cookies attribuent des identifiants uniques aux visiteurs du site via des favicons. Contrairement aux méthodes de suivi traditionnelles, cet identifiant est conservé presque pour toujours et ne peut pas être supprimé par l'utilisateur à l'aide de méthodes simples. La méthode de suivi fonctionne même en mode incognito. Les super cookies ne sont pas supprimés lorsque vous videz votre cache, fermez votre navigateur ou redémarrez votre système, utilisez un VPN ou des bloqueurs de publicités. »
Comment fonctionne la prise d'empreintes digitales
Pour afficher l'icône, l'attribut suivant est inséré dans le code de page:
<link rel="icon" href="/favicon.ico" type="image/x-icon">
Les favicons doivent être très facilement accessibles via un navigateur. Par conséquent, ils sont mis en cache dans une base de données locale distincte, appelée cache de favicon (F-Cache), où l'URL, l'ID de favicon et la durée de vie sont stockés.
Lorsqu'un utilisateur visite le site, le navigateur recherche dans le F-Cache local une entrée contenant l'URL du site Web actif. Si l'entrée est trouvée, l'icône est chargée à partir du cache. S'il n'y a pas d'entrée, le navigateur envoie une requête GET pour télécharger le favicon depuis le serveur.
Ce mécanisme permet au serveur d'en apprendre beaucoup sur le visiteur. En combinant le statut des favicons livrées et échouées pour des URL spécifiques, le client se voit attribuer un modèle unique (numéro d'identification). Ensuite, l'ID est enregistré:
const N = 4; const ROUTES = ["/a", "/b", "/c", "/d"]; const ID = generateNewID(); // -> 1010 • (select unassigned decimal number, here ten: 10 -> 1010b in binary)
const vector = generateVectorFromID(ID); // -> ["/a", "/c"] • (because [a, b, c, d] where [1, 0, 1, 0] is 1 -> a, c)
Après avoir rechargé le site, cet identifiant peut être restauré à partir de la liste des requêtes réseau envoyées par le client pour les favicons manquantes - et ainsi identifier le navigateur.
const visitedRoutes = []; Webserver.onvisit = (route) => visitedRoutes.push(route); // -> ["/b", "/d"] Webserver.ondone = () => { const ID = getIDFromVector(visitedRoutes) }; // -> 10 • (because "/a" and "/b" are missing -> 1010b)
L'auteur a lancé un site Web pour démontrer l'empreinte digitale à l'aide de favicons. Le code source et une description détaillée du mécanisme ont été publiés .
Le pire dans cette vulnérabilité est la facilité avec laquelle il est facile de contourner les méthodes traditionnelles que les gens utilisent pour protéger leur vie privée. Les empreintes digitales franchissent le mode "privé" de Chrome, Safari, Edge et Firefox, a déclaré Strehle. Nettoyage du cache, VPN ou bloqueur de publicités - rien ne s'oppose aux favicons malveillantes.
Les mêmes conclusions ont été tirées par des chercheurs de l'Université de l'Illinois dans le travail scientifique récemment publié "Tales of Favicons and Caches: Persistent Tracking in Modern Browsers""Nous avons constaté que la combinaison de notre technique de suivi des favicon avec des empreintes digitales via des attributs de navigateur immuables permet au site de récupérer un identifiant de suivi 32 bits en deux secondes", indique l'étude. - En raison de la gravité de la vulnérabilité, nous proposons d'apporter des modifications à la mise en cache des favicons du navigateur pour empêcher cette forme de suivi. Nous avons partagé nos résultats avec les développeurs de fournisseurs de navigateurs qui explorent actuellement des options d'atténuation. »
L'empreinte digitale via favicons fonctionne actuellement dans tous les principaux navigateurs, y compris les mobiles (signe plus):
Le navigateur |
les fenêtres |
MacOS |
Linux |
iOS |
Android |
Remarques |
|---|---|---|---|---|---|---|
| Chrome (v 87.0) | + | + | + | + | + | ? |
| Safari (v 14.0) | ? | + | ? | + | ? | ? |
| Bord (v 87.0) | + | + | ? | ? | + | ? |
| Firefox (v 85.0) | + | + | ? | ? | ? | Une autre empreinte digitale en mode incognito |
| Brave (v 1.19.92) | + | + | + | ? | ? | ? |
Le tableau suivant indique le temps minimum requis pour mener une attaque. Le chiffre réel dépend également de facteurs supplémentaires tels que la vitesse de connexion Internet, l'emplacement, les performances du matériel et le type de navigateur.
| Redirections
(N bits) |
Nombre de clients distingués | Temps d'enregistrement | Temps de lecture | Échelle d'attaque |
|---|---|---|---|---|
| 2 | quatre | <300 ms | <300 ms | Un utilisateur avec quatre navigateurs |
| 3 | 8 | <300 ms | ~ 300 ms | Nombre approximatif de Kardashians |
| quatre | 16 | <1 s | ~ 1 s | Un groupe de vos voisins |
| 8 | 256 | <1 s | ~ 1 s | Tous vos amis Facebook |
| Dix | 1024 | <1,2 s | ~ 1 s | Très petit village |
| 20 | 1 048 576 | <1,8 s | <1,5 s | Petite ville (San Jose) |
| 24 | 16 777 216 | <2,4 s | <2 s | Tous les Pays-Bas |
| 32 | 4 294 967 296 | ~ 3 s | <3 s | Toutes les personnes ayant accès à Internet |
| 34 | 17 179 869 184 | ~ 4 s | ~ 4 s | 4 |