Web Worker / OffscreenCanvas constructor is not native (worker-realm spoof injection)

br.worker_constructor_tampered  ·  convicts

browserlayer
artifactcategory
2evaders caught

What it catches

The escalation guard for the realm-coherence family (worker_divergence, timezone/languages/webgl/canvas_worker_vs_main). Those rules observe a Web Worker, which a tool can only defeat by wrapping window.Worker / OffscreenCanvas to inject its spoof into worker scope — but a real browser's global Worker and OffscreenCanvas are native; a wrapped one is not. The collector's ctorTampered now applies TWO FP-safe invariants: (1) toString must contain '[native code]' — a plain-function wrap (stealth WORKER_WRAP) fails this; (2) the constructor-identity round-trip C.prototype.constructor === C must hold — a new Proxy(Worker, {construct}) (stealth WORKER_PROXY) defeats (1) because a Proxy over a native ctor REFLECTS the target's '[native code]' toString, but it cannot defeat (2): the Proxy's .prototype forwards to the REAL ctor's prototype whose .constructor is the real ctor, not the Proxy, so the round-trip breaks. v0.74.46 GROUNDED LIVE: stealth WORKER_PROXY does the COALESCE_PROXY pattern on the Worker ctor — it injects the hardwareConcurrency spoof into worker scope via the construct trap (defeating worker_divergence) AND its toString shows '[native code]' (defeating invariant 1), so before this iteration it tripped NEITHER worker_divergence NOR worker_constructor_tampered (a clean EVADES on the worker-realm surface, exactly the 'future prototype-constructor-identity check' this rule's source had deferred); with invariant (2) added, WORKER_PROXY now trips worker_constructor_tampered while WORKER_WRAP still trips it via invariant (1), and real Chromium + plain STEALTH (native, identity intact) trip NEITHER. FP-safe ACTIVE by spec: every real native constructor satisfies prototype.constructor === itself, extensions run in isolated worlds and do not replace these globals, and a legit CDP override does not wrap them — so a tampered Worker/OffscreenCanvas constructor is an injection tool, not a real browser. Residual (next rung): a Proxy that ALSO redefines RealWorker.prototype.constructor back to the Proxy restores the round-trip — a deeper escalation that itself rewrites a native prototype's constructor data property, the future rung.

Signals it reads

browser.worker_constructor_tampered

How it fires

present

Evaders it caught 2

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