Firefox/Tor Browser IndexedDB Ordering Fingerprint — CVE-2026-6770
by nightcorefan94 · 2026-07-05
- Severity
- Medium
- CVE
- CVE-2026-6770
- Category
- binary
- Affected product
- Mozilla Firefox / Tor Browser
- Affected versions
- Firefox versions prior to 150 / ESR prior to 140.10 (per source repository; fixed in Firefox 150 / ESR 140.10)
- Disclosed
- 2026-07-05
- Patch status
- patched
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-04 |
| Author / Researcher | nightcorefan94 |
| CVE / Advisory | CVE-2026-6770 |
| Category | binary |
| Severity | Medium |
| CVSS Score | Not specified in source |
| Status | PoC |
| Tags | firefox, tor-browser, indexeddb, fingerprinting, deanonymization, privacy |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Mozilla Firefox / Tor Browser |
| Versions Affected | Firefox versions prior to 150 / ESR prior to 140.10 (per source repository; fixed in Firefox 150 / ESR 140.10) |
| Language / Platform | JavaScript (runs in-browser, HTML PoC) |
| Authentication Required | No |
| Network Access Required | No — the PoC runs entirely client-side once the page is loaded |
Summary
Prior to the fix, Firefox’s indexedDB.databases() API returned database names in an implementation-specific (non-alphabetically-sorted) internal order rather than a canonical sorted order. Because this ordering can vary based on subtle per-installation/per-session state, a malicious web page can create a fixed set of uniquely-named IndexedDB databases and then read back indexedDB.databases() to observe their return order as a fingerprinting side-channel. This is particularly significant for the Tor Browser, whose entire threat model depends on all users appearing identical — a stable non-random ordering artifact lets a site fingerprint and correlate a visitor across page loads or sessions within a single browsing session, undermining that anonymity guarantee.
Vulnerability Details
Root Cause
indexedDB.databases() did not guarantee a canonical (e.g. alphabetically sorted) ordering of returned database names; the underlying implementation’s insertion-order or internal-storage-order behavior leaked information distinguishing individual browser instances/sessions, which functions as a fingerprinting/tracking vector. Not specified in source: full internal explanation of why the pre-fix ordering was non-deterministic per-instance.
Attack Vector
- The page creates 26 uniquely-named IndexedDB databases (one per letter of the alphabet) via
indexedDB.open(name). - It then calls
indexedDB.databases()to retrieve the list of created databases and their names. - On a vulnerable (unpatched) browser, the returned order is not guaranteed to be alphabetically sorted and can vary in a manner that yields a stable, distinguishing fingerprint for that browser instance/session.
- The PoC hashes the observed name ordering (SHA-256) to produce a compact fingerprint value and reports whether the ordering was already sorted (indicating a patched/fixed browser) or not (indicating the vulnerable behavior is present).
Impact
An attacker-controlled web page can derive a fingerprint that helps distinguish or correlate a specific browser instance across visits, which is a meaningful privacy/anonymity degradation for privacy-focused browsers such as Tor Browser, where session-to-session and user-to-user indistinguishability is a core security property.
Environment / Lab Setup
Target: Firefox / Tor Browser prior to the fix (Firefox 150 / ESR 140.10)
Attacker: Any web page reachable by the victim browser; no special tooling beyond a modern browser to view poc.html
Proof of Concept
PoC Script
See
poc.htmlin this folder.
| |
The page creates 26 IndexedDB databases named after each lowercase letter, calls indexedDB.databases() to read back their order, checks whether the order is alphabetically sorted, and if not, joins the names and computes a SHA-256 hash of the resulting order as a fingerprint value, printed to the page.
Detection & Indicators of Compromise
Not specified in source — this is a client-side browser-fingerprinting technique with no
server-side or network log artifact; detection would rely on browser-side instrumentation
(e.g. monitoring pages that create large numbers of same-session IndexedDB databases followed
immediately by an indexedDB.databases() enumeration call).
Signs of compromise:
- A web page creating a large number of short-lived, sequentially-named IndexedDB databases immediately followed by a call to
indexedDB.databases(). - Browser extensions/telemetry showing repeated fingerprinting-style IndexedDB enumeration calls from the same origin across sessions.
Remediation
| Action | Detail |
|---|---|
| Primary fix | Upgrade to Firefox 150 or ESR 140.10 or later, which is stated to fix the ordering issue (per source repository). |
| Interim mitigation | Disable JavaScript or use Tor Browser’s higher security levels for untrusted sites; avoid running untrusted third-party scripts capable of enumerating IndexedDB databases. |
References
Notes
Mirrored from https://github.com/nightcorefan94/CVE-2026-6770 on 2026-07-05. The repository’s LICENSE file was excluded per archive policy.
| |