La vulnerabilidad de privacidad descubierta en navegadores basados en Firefox, incluyendo Tor Browser, se originó en la implementación de IndexedDB. Específicamente, la API indexedDB.databases() exponía un identificador único y persistente del proceso del navegador. Esto ocurría porque el orden de las entradas devueltas por la API no era neutral, sino que reflejaba el orden interno de iteración de una nsTHashSet utilizada para almacenar los nombres de las bases de datos.

La causa raíz reside en que, en el modo de navegación privada, los nombres de las bases de datos se mapeaban a UUIDs a través de una tabla hash global (gStorageDatabaseNameHashtable) que persistía durante la vida útil del proceso de Firefox y era compartida entre todos los orígenes. Cuando se invocaba indexedDB.databases(), los nombres de las bases de datos se insertaban en una nsTHashSet sin ningún tipo de ordenamiento posterior. La iteración sobre esta nsTHashSet resultaba en un orden determinista basado en el layout interno de la tabla hash, los valores UUID generados y el historial de inserción.

Esta exposición de un detalle de implementación interna, que se suponía que no debía contener información sensible, permitió el fingerprinting. Las salvaguardas de privacidad, como el modo de navegación privada de Firefox y la función 'Nueva Identidad' de Tor Browser, fallaron porque el identificador persistía a través de sesiones y orígenes, rompiendo las expectativas de aislamiento y desvinculación del usuario. La alta capacidad de entropía (hasta 44 bits con 16 nombres de bases de datos) hacía que este identificador fuera robusto para el seguimiento.