Fingerprint Resistance Demo
This XS-Leak probes TCP socket pool exhaustion to infer the pool size — a reliable browser fingerprint. Chrome 143 randomizes the pool limit, spreading the cliff and defeating the probe.
Fingerprinting Model
Pre-randomization (sharp cliff)
Post-randomization (spread cliff)
—
Detected cliff (conn #)
—
Cliff spread (connections)
—
Bits leaked
Timing Log
Entropy Calculator
Given the timing histogram, how much information does the pool-exhaustion probe leak about your browser?
—
Run the probe above to calculate entropy.
How It Works
Pre-Chrome 143: XS-Leak
- Browsers cap concurrent TCP connections per host (typically 6) and globally (e.g. 256).
- An attacker page opens many fetches simultaneously.
- When the pool hits the limit, subsequent connections queue — producing a sharp latency spike at connection #N.
- This cliff value is stable and reproducible: it identifies browser version and platform to within ~4 bits.
- Cross-site: a page can probe connections opened by a victim site, inferring whether the victim has N sessions open.
After Chrome 143: Randomization
- Chrome 143 jitters the effective pool limit by a random offset each session.
- The cliff no longer falls at a fixed connection number.
- Across probes, the cliff is uniformly spread over a range — destroying the sharp fingerprint signal.
- Entropy leaked drops from ~4 bits to <1 bit: the probe becomes statistically unreliable.
- Remaining side channels (global connection timing, OS-level jitter) are out of Chrome’s control but far noisier.