Eine Schwachstelle in der API IndexedDB ermöglicht die Identifizierung von Benutzern in Firefox und Tor Browser.

Im Browser-Engine Gecko wurde eine Schwachstelle (CVE-2026-6770) entdeckt, die es ermöglicht, einzigartige Identifikatoren zum Nachverfolgen des Zugriffs auf verschiedene Websites aus demselben Browser zu generieren. Das Problem tritt in allen auf Firefox basierenden Browsern auf, einschließlich Tor Browser, und funktioniert sogar im privaten Modus. Die Identifikatoren gelten innerhalb des aktuellen Browserprozesses und werden nach einem Neustart des Browsers zurückgesetzt. Die Schwachstelle wurde in den Versionen Firefox 150/140.10.0 und Tor Browser 15.0.10 behoben.

Um einen Identifikator zu generieren, genügt es, auf verschiedenen Websites über die API IndexedDB dieselbe Reihenfolge von Datenbanken zu erstellen und danach die Reihenfolge dieser Datenbanken beim Aufruf der Methode indexedDB.databases() zu bewerten. Für verschiedene Browserinstanzen wird die Reihenfolge der Auflistung der Datenbanken unterschiedlich sein, aber innerhalb einer Instanz wird sie sich wiederholen. Diese Reihenfolge bleibt bis zum Neustart des Browsers erhalten und wird unabhängig von der geöffneten Website reproduziert.

Beispielsweise wird nach der Erstellung der Datenbank „a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,r“ in einer Firefox-Instanz die Methode indexedDB.databases() stets „g,c,p,a,l,f,n,r,d,j,b,o,h,e,m,i,k“ zurückgeben, während sie in einer anderen Instanz „j,b,o,h,e,m,i,k,f,n,r,d,g,c,p,a,l“ zurückgibt. Bei der Erstellung von 16 Datenbanken kann man etwa 44 Bit Entropie zur Identifizierung erhalten. Die Generierung des Identifikators wird nicht durch das Löschen lokaler Browserspeicher oder das Aktualisieren der Tor-Node-Kette mit der Schaltfläche „New Identity“ im Tor Browser beeinflusst. Die Methode kann auch zur Identifizierung von Benutzern im privaten Fenster verwendet werden.

Die Schwachstelle wird durch die Besonderheit der Implementierung der API IndexedDB verursacht, wobei die Reihenfolge der Datenbanken von der internen Strukturabhängigkeit beeinflusst wird, die für jede Instanz des Browser-Prozesses spezifisch ist. Die Reihenfolge der Elemente in der Liste der Datenbanken, die von der Methode indexedDB.databases() zurückgegeben wird, hängt nicht von den Namen der Datenbanken oder der Reihenfolge ihrer Erstellung ab, sondern von der Platzierung der internen UUID-Hashes in der globalen Hash-Tabelle, die mit den Dateinamen verknüpft sind, in denen die Datenbanken auf der Festplatte gespeichert sind.

Quelle: opennet.ru

60GB SSD 8Gb DDR4