Summary
Electron: contextBridge object copy honors prototype setters
Advisory details
Impact
Objects copied across the contextBridge boundary from untrusted content could carry an attacker-influenced prototype, enabling prototype-pollution-style attacks against preload code despite context isolation being enabled.
Apps are only affected if their preload code accepts object arguments from untrusted content and reads properties from them without own-property checks. Apps that only accept primitive arguments, or that validate object arguments, are not affected.
Workarounds
Validate objects received from untrusted content with own-property checks (Object.hasOwn), or copy them onto a null-prototype object before use.
Fixed Versions
42.0.0-beta.441.2.240.9.239.8.9
For more information
If you have any questions or comments about this advisory, email Electron at security@electronjs.org
References
- https://github.com/advisories/GHSA-ff2p-hmqr-hxm4
- https://github.com/electron/electron/security/advisories/GHSA-ff2p-hmqr-hxm4
- https://github.com/electron/electron/pull/51083
- https://github.com/electron/electron/pull/51084
- https://github.com/electron/electron/pull/51085
- https://github.com/electron/electron/pull/51086
- https://github.com/electron/electron/commit/17d5d26499cd279fab48f5f26527f8edc02a7713
- https://github.com/electron/electron/commit/23a6efb714dec80e2cf45d3054d18d701162e4dd
Related vulnerabilities
All Supply chain →- HIGHCVE-2026-63376
toml-node: Prototype Pollution Leads to `Object.prototype` Corruption via `__proto__` Key-Path Desynchronization
- HIGHCVE-2026-82404
TOON: Prototype pollution when decoding untrusted TOON input
- HIGHCVE-2026-71553
ApostropheCMS: 2nd-order prototype pollution via PATCH leading to single-request persistent DoS
- MEDIUMGHSA-cp6q-959q-f8rh
Tiptap: mergeAttributes() turns an own __proto__ key into inherited executable DOM attributes
- MEDIUMCVE-2026-81887
Livewire DOM-based cross-site scripting during client-side state handling
- HIGHCVE-2026-73088
Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats)