Une vulnérabilité a été выявée dans le moteur de navigateur Gecko (CVE-2026-6770), permettant de générer des identifiants uniques pour le suivi de l'ouverture de différents sites à partir d'un même navigateur. Ce problème se manifeste dans tous les navigateurs basés sur Firefox, y compris le Tor Browser, et fonctionne même en mode de navigation privée. Les identifiants sont valides pendant la durée du processus actuel du navigateur et sont réinitialisés après le redémarrage du navigateur. La vulnérabilité a été corrigée dans les versions Firefox 150/140.10.0 et Tor Browser 15.0.10.
Pour générer un identifiant, il suffit de créer sur différents sites via l'API IndexedDB la même séquence de base de données, puis d'évaluer l'ordre de ces bases de données à la suite de l'appel de la méthode indexedDB.databases(). Pour différentes instances de navigateur, l'ordre de l'énumération des bases de données sera différent, mais pour une seule instance, il se répétera. Cet ordre est conservé jusqu'au redémarrage du navigateur et se reproduit indépendamment du site ouvert.
Par exemple, après la création de la base de données « a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,r » dans une instance de Firefox, la méthode indexedDB.databases() renverra toujours « g,c,p,a,l,f,n,r,d,j,b,o,h,e,m,i,k », tandis que dans une autre instance, elle renverra « j,b,o,h,e,m,i,k,f,n,r,d,g,c,p,a,l ». À la création de 16 bases de données, on peut obtenir environ 44 bits d'entropie pour l'identification. La génération de l'identifiant n'est pas affectée par la suppression des stockages locaux du navigateur et par le rafraîchissement de la chaîne de nœuds Tor grâce au bouton « Nouvelle identité » dans Tor Browser. Cette méthode peut également être utilisée pour identifier les utilisateurs dans une fenêtre de navigation privée.
La vulnérabilité est causée par une particularité de l'implémentation de l'API IndexedDB, où l'ordre d'énumération des bases de données est influencé par l'agencement des structures internes, spécifique à chaque instance de processus de navigateur. L'ordre des éléments dans la liste des bases de données renvoyée par la méthode indexedDB.databases() dépend non pas des noms des bases de données ou de l'ordre de leur création, mais de leur emplacement dans la table de hachage globale des UUID internes, associés aux noms des fichiers dans lesquels les bases de données sont stockées sur le disque.
Source : opennet.ru
