We Found a Stable Firefox Identifier Linking All Your Private Tor Identities

· databases web · Source ↗

TLDR

  • Firefox’s indexedDB.databases() returns results in hash-table iteration order, creating a stable 44-bit process-lifetime fingerprint that tracks users across origins and defeats Tor Browser’s “New Identity.”

Key Takeaways

  • indexedDB.databases() exposes database names in UUID hash-table iteration order, not creation order, leaking process-scoped state to any calling origin.
  • The UUID mapping in StorageDatabaseNameHashtable inside dom/indexedDB/ActorsParent.cpp is process-scoped, not origin-scoped, so unrelated sites independently derive the same identifier.
  • With 16 controlled database names the permutation space is 16! (~44 bits of entropy), easily enough to distinguish concurrent browser instances in practice.
  • Tor Browser’s “New Identity” feature does not clear the UUID mappings; only a full Firefox process restart resets the fingerprint.
  • Fix is lexicographic sorting of indexedDB.databases() output before returning, shipped in Firefox 150 and ESR 140.10.0 (Mozilla Bug 2024220).

Hacker News Comment Review

  • Commenters broadly agreed the attack’s real-world window is bounded by the browser process lifetime, but noted that a running Tor session can span hours of sensitive activity.
  • Discussion on threat model: fingerprinting pseudonymizes rather than deanonymizes Tor users, and commenters with high-risk opsec needs pointed toward Whonix, Qubes, GrapheneOS, and Kicksecure documentation instead of HN advice.
  • The disclosing company’s own fingerprinting product prompted skepticism about why they responsibly disclosed rather than quietly exploiting a differentiating capability, with no clear answer in the thread.

Notable Comments

  • @SirMaster: Questions why indexedDB.databases() requires no user permission prompt, arguing browsers should gate storage API access the way mobile OSes gate hardware sensors.
  • @yencabulator: Practical interim mitigation before patching: fully exit Tor Browser between sessions and never mix use cases within a single running process.

Original | Discuss on HN