The pattern operates on three assumptions most JavaScript code makes without thinking. First, that properties read off an object came from the object itself. They did not; they came from the prototype chain, and the prototype chain can be reached from user input via __proto__ keys. Second, that JSON.parse produces safe values. It does not in any runtime that routes __proto__ through the normal property setter. Third, that an object created from user input is isolated from the rest of the runtime. It is not; it shares Object.prototype with every other object in the process.
The attack shape is consistent across specific CVEs. An attacker-controlled JSON document includes a __proto__ key with an object value. The server parses it into an options object, a config, a parameter bag. Somewhere in the code path, a library function merges that input into a new object using a recursive assign-like helper that treats __proto__ as a normal key. The merge walks into Object.prototype and sets the attacker's fields. Every object in the process now inherits those fields. The security gate downstream reads user.admin against a fresh object that has no admin of its own, gets true via the prototype, permits the privileged action. The timing is deterministic, the reliability is 100%, and the attack surface is every library that merges user JSON into internal structures.
What makes this distinct from generic prototype pollution is the TARGET. Many prototype pollution CVEs are denial of service or unexpected behavior. Trust-bypass specifically describes cases where a security-sensitive property (admin, role, allowed, privileged, trusted, authenticated) is reachable via prototype lookup and the runtime's authentication reads it without defense. The pollution is not the vulnerability. The trust decision that reads from the polluted prototype is the vulnerability.
Exhibits
CVE-2026-34621: Adobe Acrobat's Privilege Gate Inherits What It Checks. Acrobat's JavaScript environment has a privilege gate that reads properties off an object to determine whether a script may invoke privileged operations. The attacker's PDF embeds a script that pollutes the prototype, causing the properties the gate consults to evaluate as permitting the privileged call. The gate is not broken; it is reading exactly what the runtime has in the prototype chain. The attack succeeds because the gate's trust decision is built on property-read semantics that the attacker reached from the other side. The post walks through the specific property names the gate queries and shows the JSON payload that sets them.