getHighEntropyValues().model differs between the main thread and a Worker

br.uadata_model_worker_divergence  ·  convicts

browserlayer
coherencecategory

What it catches

Realm coherence for the UA-CH high-entropy MODEL — the durable blue counter to a main-only getHighEntropyValues().model forge (the red move that beats br.mobile_no_js_model by overriding NavigatorUAData.prototype.getHighEntropyValues on the main thread). navigator.userAgentData.getHighEntropyValues is exposed in WorkerNavigator too (Blink), so the Worker resolves the REAL hardware model — EMPTY on a desktop Chromium faking Android. A main-thread prototype override that injects a fake model never reaches Worker scope (addInitScript / CDP addScriptToEvaluateOnNewDocument do not run in Workers), so the main model (forged 'Pixel 5') and the worker model (real '') disagree. Extends the realm-coherence family (br.uadata_worker_divergence keys on platform|mobile, NOT the model — the hole this closes) to the model surface. Convicting (w0.8 — a realm divergence is a hard tamper signal). The model is now a 3-surface ratchet: the Sec-CH-UA-Model header (net.ch_ua_mobile_no_model), main-thread getHighEntropyValues (br.mobile_no_js_model), and this WORKER model — a header route-forge + a main-JS prototype-forge fill the first two, but forging the worker too requires rewriting worker source (→ br.worker_source_rewritten); only a REAL Android device fills all three natively. FP-SAFE: a real device reports the same model in both realms; compared only for a mobile device and when the worker actually reported a model. GROUNDED LIVE: KS_DEVICE='Pixel 5' + KS_FORGE_MODEL + KS_FORGE_JS_MODEL (which clear the header + main-JS model checks) trips uadata_model_worker_divergence — the worker model stays real-empty while the main is forged; an un-forged Android device (both empty, or both filled) does not.

Signals it reads

browser.uadata_model_worker_divergence

How it fires

present

Bypassed by 10

Frontier evaders that reach the detector uncaught (scored only suspicious, defeating every convicting tell) — this check is not one that stops them. The red-team frontier this detection still has to convict.

← all detections