/

CVE-2026-102676

Severity:

HIGH RISK

(8.3)

Improper Privilege Management (CWE-269) in Electron Webview

CVE-2026-102676

Analyzed

Vulnerability type

Category:

Improper Privilege Management

CWE:

CWE-269, CWE-1188

Impact:

Privilege Escalation and Unauthorized Node.js Access

Severity:

HIGH RISK

(8.3)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

An Electron <webview> guest could enable Node.js integration in its Web Workers even when the unsandboxed embedder had disabled Node.js integration. Untrusted guest content may therefore create a Node-enabled worker with more privileges than the host application intended, particularly when the <webview> tag is enabled and the embedder is unsandboxed.

Affected context

The issue can arise in Electron applications that enable the <webview> tag and load guest content in an unsandboxed embedder. It depends on a mismatch between the privileges granted by the embedder and the capabilities available to guest-created Web Workers. Applications that do not enable <webview>, or that keep the embedder sandboxed, have a substantially different exposure profile.

Exploit preconditions

  • Attack surface: Electron <webview> guest content and its Web Workers
  • Required access: Ability to cause or control content loaded in an affected guest
  • Trigger point: Creation or initialization of a Web Worker by the guest
  • Relevant configuration: The <webview> tag is enabled and the embedder is unsandboxed
  • Why exploitation is possible: Guest-controlled worker configuration can obtain Node.js integration despite the embedder having disabled that capability

Why this happens

The underlying flaw is an inconsistent enforcement of privilege boundaries between an Electron embedder, its <webview> guest, and guest-created Web Workers. A worker capability was made available based on guest-controlled behavior even though the embedder had not granted Node.js integration. This maps primarily to CWE-269: Improper Privilege Management, with CWE-1188: Insecure Default Initialization of Resource, because initialization behavior did not reliably preserve the intended security configuration.

Potential impact

  • Untrusted guest content may gain Node.js capabilities that the embedder intended to deny
  • Attackers could access privileged runtime functionality from a Web Worker
  • Application confidentiality and integrity could be reduced
  • Additional compromise may be possible depending on exposed Node.js APIs and application permissions
  • The affected desktop application's local user context could be placed at greater risk

General mitigation guidance

Mitigation generally focuses on preserving privilege decisions across all guest and worker creation paths.

Common defensive patterns include:

  • Keeping the Electron embedder sandboxed where application architecture permits
  • Avoiding the <webview> tag when a more isolated or narrowly scoped content model is sufficient
  • Treating guest content and worker scripts as untrusted by default
  • Ensuring Node.js integration and related privileged capabilities remain disabled for untrusted content
  • Enforcing consistent privilege inheritance between embedders, guests, frames, and workers
  • Applying least privilege to exposed preload APIs and limiting filesystem, process, and IPC access
  • Restricting guest navigation and content origins through explicit allowlists
  • Testing security settings across worker creation, reload, navigation, and other lifecycle transitions

How teams detect issues like this

Organizations can look for this class of issue through:

  • Static and configuration analysis of Electron applications that enable <webview> or unsandboxed renderers
  • Code review checks for Node.js integration, worker creation, preload exposure, and guest navigation settings
  • Tests that verify denied capabilities remain denied in Web Workers and nested guest contexts
  • Runtime telemetry for unexpected worker access to Node.js, privileged IPC channels, filesystem APIs, or process APIs
  • Policy enforcement requiring sandboxing and explicit origin controls for untrusted embedded content
  • Automated security review tools that flag privilege-boundary inconsistencies and unsafe Electron configuration patterns

Sources

SourceLink
github.comgithub.com/electron/electron/commit/6462a2e1dc4e6adffd3b7d9b9be1474c45dcbbe2
github.comgithub.com/electron/electron/commit/9a675aef8822bae4088567822969f900b3a37671
github.comgithub.com/electron/electron/commit/b3ae0aab5cf81c2ed03d04df1ae8e69ecfab7886
github.comgithub.com/electron/electron/commit/cd34f335c8664613db5b6e61ae51e2e1846233ae
github.comgithub.com/electron/electron/releases/tag/v41.10.6
github.comgithub.com/electron/electron/releases/tag/v42.9.2
github.comgithub.com/electron/electron/releases/tag/v43.4.1
github.comgithub.com/electron/electron/releases/tag/v44.0.0-beta.5
github.comgithub.com/electron/electron/security/advisories/GHSA-9qh4-3jw8-366w

Frequently asked

questions

Exploitation is generally dependent on an Electron application loading attacker-controlled or otherwise untrusted content in an affected <webview>. The specific delivery path depends on the application's content and navigation model.

An attacker typically needs a way to influence content loaded by the guest, such as through an untrusted page, compromised content source, or unsafe navigation flow. Direct local access to the application is not necessarily required if the application loads attacker-controlled content.

Preserve the embedder's least-privilege decisions for guests and workers, keep the sandbox enabled where feasible, and avoid exposing Node.js integration to untrusted content.

Model privilege inheritance explicitly, test security settings across frames and workers, restrict guest origins and navigation, minimize preload and IPC capabilities, and apply automated policy checks to Electron configuration and application code.

Find out what's already
exploitable in your codebase.