Skip to main content

Electron EUVDEUVD-2026-107374

| CVE-2026-113798 MEDIUM
Origin Validation Error (CWE-346)
2026-10-21 GitHub_M GHSA-x562-297c-g43g
5.4
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Embed untrusted cross-origin iframe in app
  2. Delivery
    Lure user gesture to trigger request
  3. Exploit
    Iframe calls requestPointerLock()
  4. Execution
    Handler sees top-level origin, not iframe
  5. Impact
    Permission granted under trusted identity

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Origin validation
Exploitation Conditions

Exploitation requires an Electron app (versions prior to 42.11.9 / 43.7.6 / 44.5.0 / 45.0.0-alpha.13) that (1) embeds untrusted cross-origin iframe content and (2) uses session.setPermissionRequestHandler() to grant pointerLock permission based on the requesting origin/frame identity. The underlying technical precondition is that the requesting iframe shares a render process/widget with its parent - i.e. same-site cross-origin iframes under site-per-process, or any iframe when site isolation is disabled - so the browser cannot distinguish the requesting frame from the local root. A user gesture is required to initiate pointer lock (UI:R). LIMITING FACTORS: applications that deny pointerLock for untrusted embedded content are explicitly NOT affected; apps that do not embed untrusted iframes are not affected; and the impact is confined to mis-attributed pointer-lock permission grants (no confidentiality impact).

Impact

This is a genuinely low-to-moderate priority issue despite the 5.4 CVSS, and the signals are consistent in pointing to limited real-world risk. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L) describes a network-reachable, unauthenticated flaw requiring user interaction, with no confidentiality impact and only low integrity/availability impact - matching a permission-identity-confusion bug rather than code execution or data theft. No EPSS score, KEV listing, or public POC was provided in the intelligence, so there is no evidence of active exploitation or weaponization; exploitation status is best characterized as no public exploit identified at time of analysis. Critically, the vulnerability is NOT exploitable against default or typical Electron apps: it only matters for applications that both embed untrusted cross-origin iframe content AND grant pointerLock based on the requesting origin, and the vendor explicitly states applications that deny pointerLock for untrusted embedded content are unaffected. The CWE-346 (Origin Validation Error) classification aligns with the described confusion between the requesting frame's and top-level frame's requestingUrl/isMainFrame values. Net: a real, confirmed bug worth patching during normal maintenance cycles, but not an emergency for most deployments.

Exploit ScenarioDerived

An Electron application embeds untrusted third-party web content in a cross-origin iframe (sharing a process with the parent, e.g. same-site cross-origin under site-per-process or any iframe without site isolation) and uses session.setPermissionRequestHandler() to grant pointerLock based on the requesting origin. A malicious embedded page calls Element.requestPointerLock(), and because the handler receives the top-level frame's trusted requestingUrl and isMainFrame instead of the iframe's, the app grants pointer lock under the trusted top-level identity. No public exploit code was identified; exploitation requires a user gesture (UI:R) to initiate the lock.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 21, 2026

Electron mis-attributes pointerLock permission requests originating from cross-origin iframes, causing session.setPermissionRequestHandler() to receive the top-level frame's requestingUrl and isMainFrame values instead of the actual requesting frame's. Applications that embed untrusted iframe content and grant pointer lock based on the requesting origin can therefore be tricked into granting the permission under the top-level page's identity, allowing an embedded attacker-controlled frame to capture the pointer (integrity and availability impact only, no confidentiality impact). Exploitation requires a user gesture and an affected Electron version prior to 42.11.9, 43.7.6, 44.5.0, or 45.0.0-alpha.13; apps that already deny pointerLock for untrusted content are not affected. No public exploit code was identified at time of analysis and the issue is not in CISA KEV, so real-world risk is limited to the narrow population of apps whose permission handlers trust origin strings for pointer lock.

RemediationAI

Upgrade to Electron 42.11.9, 43.7.6, 44.5.0, or 45.0.0-alpha.13 (or later) as documented in GHSA-x562-297c-g43g and the linked release tags; the fix is delivered through PR #54432 with follow-up pull requests #54463 through #54466 and commits 076c749, 0b680cf, 1755ee5, 4073e9f and a48e6ea. If an immediate upgrade is not possible, the highest-value compensating control is to stop authorizing pointerLock by origin inside setPermissionRequestHandler(): deny pointerLock unconditionally for any content not served from a first-party origin you fully control, or reject any request where isMainFrame is false or where the requestingUrl does not exactly match the top-level document's URL - the trade-off is that legitimate same-origin iframe use cases requiring pointer lock will break. A second, narrower workaround is to disable site isolation so behavior is at least uniform and detectable, or conversely to move embedded third-party content into a separate BrowserWindow/WebContents with its own session, so the untrusted frame never shares a widget with the trusted top-level page; this costs additional process memory and complicates IPC between the windows. Blocking pointer lock entirely at the app level (returning deny for the pointerLock permission) removes the attack surface at the cost of losing the mouse-capture feature, and removing untrusted iframe embedding from the app is the most robust option where the feature is not essential.

Affected VersionsENISA

electron 44.0.0-alpha.1, < 44.5.0
electron < 42.11.9
electron 43.0.0-alpha.1, < 43.7.6
electron 45.0.0-alpha.1, < 45.0.0-alpha.13

Affected Packages

npm electron fix: 42.11.9, 43.7.6, 44.5.0, 45.0.0-alpha.13

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Electron supplies Blink/Chromium's pointer lock plumbing to application code through session.setPermissionRequestHandler(), classifying the bug as CWE-346 (Origin Validation Error). In Chromium, Element.requestPointerLock() is delivered to the browser over the WidgetInputHandlerHost of the requesting frame's local root widget, so the browser process only learns which widget asked, not which frame. Frames that share a render process with their parent - same-site cross-origin iframes under site-per-process, or any iframe when site isolation is disabled - share that widget, making the request indistinguishable from one issued by the local root document. Chrome keys pointer lock on the top-level tab and never needed this distinction, but Electron surfaces the requesting origin and isMainFrame flag to app-level permission handlers, so the mis-attribution becomes a security-relevant origin confusion. The upstream fix in PR #54432, 'fix: plumb the requesting frame through pointer lock requests', threads the requesting frame's blink::LocalFrameToken through InputRouterClient, InputRouterImpl, RenderInputRouter and RenderInputRouterClient, validates in WebContentsImpl that the token names a live frame in the widget's process whose local root is that widget, stores it alongside pointer_lock_widget_, and exposes it via WebContentsImpl::GetPointerLockRequestingFrame(). Related upstream tracking is crbug.com/492211919, which shares the same local-root-only limitation for sandbox flag checks.

Know when Electron gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.4 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L
vuln.today AI 4.2 MEDIUM

Network-reachable untrusted web content (AV:N/PR:N) needs a user gesture (UI:R) and the specific process-sharing/app-config conditions (AC:H); impact is limited to spoofed permission identity (I:L) and cursor capture (A:L), no data disclosure (C:N).

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:L
4.0 AV:N/AC:H/AT:P/PR:N/UI:A/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
Low

Lifecycle Timeline

2
Patch available
Oct 21, 2026 - 18:03 EUVD
CVE Published
Oct 21, 2026 - 16:12 cve.org
MEDIUM 5.4

DescriptionCVE.org

Electron is a framework for writing cross-platform desktop applications using JavaScript, HTML and CSS. Prior to versions 42.11.9, 43.7.6, 44.5.0, and 45.0.0-alpha.13, pointerLock permission requests from some cross-origin iframes caused session.setPermissionRequestHandler() to receive the top-level frame's requestingUrl and isMainFrame values instead of those of the requesting frame. An application that embeds untrusted iframe content and grants pointer lock based on the requesting origin could therefore grant the permission under the top-level page's identity. Applications that deny pointerLock for untrusted embedded content are not affected. This issue is fixed in versions 42.11.9, 43.7.6, 44.5.0, and 45.0.0-alpha.13.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
High
Electron underpins a vast number of widely-deployed desktop applications
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2018-1000006 HIGH POC
8.8 Jan 24

GitHub Electron versions 1.8.2-beta.3 and earlier, 1.7.10 and earlier, 1.6.15 and earlier has a vulnerability in the pro

CVE-2025-68669 CRITICAL POC
9.6 Dec 23

Remote code execution in 5ire 0.15.2 and earlier arises because the desktop AI assistant renders Mermaid diagrams with s

CVE-2025-67744 CRITICAL POC
9.6 Dec 16

Cross-site scripting in DeepChat's Mermaid diagram renderer escalates to full remote code execution on affected desktop

CVE-2025-66481 CRITICAL POC
9.6 Dec 09

Remote code execution in DeepChat 0.5.1 and below is possible through a cross-site scripting flaw in Mermaid diagram ren

CVE-2026-93922 HIGH POC
8.6 Sep 18

Stored cross-site scripting in SiYuan through 3.8.4 lets an attacker who can set a notebook name containing an HTML payl

CVE-2017-12581 HIGH POC
8.1 Aug 06

GitHub Electron before 1.6.8 allows remote command execution because of a nodeIntegration bypass vulnerability. Rated hi

CVE-2018-15685 HIGH POC
8.1 Aug 23

GitHub Electron 1.7.15, 1.8.7, 2.0.7, and 3.0.0-beta.6, in certain scenarios involving IFRAME elements and "nativeWindow

CVE-2018-1000136 HIGH POC
8.1 Mar 23

Electron version 1.7 up to 1.7.12; 1.8 up to 1.8.3 and 2.0.0 up to 2.0.0-beta.3 contains an improper handling of values

CVE-2024-39698 HIGH POC
7.5 Jul 09

electron-updater allows for automatic updates for Electron apps. Rated high severity (CVSS 7.5), this vulnerability is r

CVE-2026-70604 HIGH POC
7.4 Aug 05

Cross-origin read bypass in Electron's custom protocol handler exposes sensitive application data to remote pages via fe

CVE-2026-70611 MEDIUM POC
6.9 Aug 05

Native code execution outside the Chromium sandbox is achievable in Electron prior to 39.8.9, 40.9.2, 41.2.1, and 42.0.0

CVE-2020-4077 CRITICAL
9.9 Jul 07

In Electron before versions 7.2.4, 8.2.4, and 9.0.0-beta21, there is a context isolation bypass. Rated critical severity

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy