Skip to main content

Electron EUVDEUVD-2026-98837

| CVE-2026-102672 MEDIUM
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-09-29 https://github.com/electron/electron GHSA-vv43-5jgx-7qv8
6.7
CVSS 3.1 · Vendor: https://github.com/electron/electron
View

Attack ChainAIDerived

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

  1. Access
    Gain local unprivileged access to macOS host
  2. Delivery
    Stage symlink/path swap on target bundle
  3. Exploit
    Trigger Squirrel.Mac auto-update (ShipIt as root)
  4. Execution
    Win TOCTOU race re-resolving target path
  5. Persist
    Root helper overwrites arbitrary app bundle
  6. Impact
    Privilege escalation / code execution as root

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
Exploitation Conditions

Exploitation requires ALL of: (1) macOS as the platform; (2) the Electron app must ship Squirrel.Mac-based auto-updates - apps not using Squirrel.Mac or on other OSes are unaffected; (3) local access to the machine as an existing user (PR:L); (4) an update install must occur so the privileged ShipIt helper runs as root (UI:R); and (5) winning a TOCTOU race window (AC:H) to swap the target bundle path between validation and the root-privileged write. There is no app-side workaround - only upgrading Electron to 39.8.10, 41.10.5, or 42.0.0-beta.2 remediates it. These prerequisites (local + macOS + Squirrel.Mac + race) sharply limit realistic exploitation despite the high impact.

Impact

This is a genuine local privilege-escalation issue but not an urgent remote-exploitation priority. The CVSS 3.1 vector (AV:L/AC:H/PR:L/UI:R/S:U) confirms local-only access, high attack complexity (a TOCTOU race per CWE-367), an already-authenticated low-privileged local user, and required user interaction (an update must be initiated). The 6.7 base score is driven entirely by the C:H/I:H/A:H impacts, which follow logically from a root-privileged helper (ShipIt) being coerced into overwriting an arbitrary application's files - a strong integrity/privesc primitive that can cascade to code execution and thus confidentiality and availability. No EPSS score, no CISA KEV listing, and no public exploit are present in the input, so this is no public exploit identified at time of analysis. The high attack complexity (winning a race window) plus the local + macOS-only + Squirrel.Mac-auto-update prerequisites substantially narrow real-world exploitability versus the raw score. The CVSS vector is internally consistent with the description (both indicate local access), so no signal conflict is present; the main caveat is that the 'Information Disclosure' tag does not match the actual impact (arbitrary root file overwrite is primarily an integrity/privesc issue).

Exploit ScenarioDerived

A local low-privileged user on a shared or already-compromised Mac stages a malicious symlink/path condition and triggers (or waits for) a Squirrel.Mac auto-update of an Electron app. Because the root ShipIt helper re-resolves the untrusted target bundle path from the on-disk request during the install, the attacker wins the race and redirects the root-privileged file write to a different application's bundle, achieving privilege escalation. No public exploit is identified, and success depends on winning a TOCTOU race window (AC:H).

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

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

Alert me

AnalysisAIv1 – Sep 29, 2026

A local time-of-check-to-time-of-use (TOCTOU) race condition in Electron's bundled Squirrel.Mac auto-update framework on macOS allows an attacker who already has local access to the machine to redirect the privileged ShipIt helper into overwriting a different application's files with root privileges during an update install. Only macOS Electron apps that ship Squirrel.Mac-based auto-updates are exposed; apps on other platforms, or that do not use Squirrel.Mac, are unaffected. The attacker is an authenticated local user (CVSS PR:L) and must win a narrow race window between path validation and the root-privileged write (AC:H) while an update is actually being installed (UI:R), yielding high confidentiality, integrity, and availability impact if successful; no public exploit code exists and there is no confirmed active exploitation (no CISA KEV listing), and no app-side workaround exists - remediation requires upgrading Electron to 39.8.10, 41.10.5, or 42.0.0-beta.2.

RemediationAI

Vendor-released patches are available: upgrade Electron to 39.8.10 (for the 39.x line), 41.10.5 (for the 41.x line), or 42.0.0-beta.2 (for the 42.x line), per advisory GHSA-vv43-5jgx-7qv8 and upstream PR https://github.com/electron/electron/pull/50745. Electron explicitly states there are no application-side workarounds for this issue, so downstream app vendors must ship a rebuild against a fixed Electron version; if that is not immediately possible, the practical compensating control is to disable Squirrel.Mac-based auto-updates in the affected macOS app and deliver updates out-of-band (manual download/MDM/enterprise software distribution), accepting the operational trade-off of slower, user-driven update latency and loss of silent background updating. Because the attack requires local code execution as an existing user on the host and an update install to trigger the root helper, restricting interactive macOS login and local process execution to trusted users reduces exposure but does not eliminate the flaw and is not a substitute for upgrading. The upstream fix additionally hardens the privileged path by refusing any install whose resolved target bundle is not the .app containing the installer, so once patched, even a manipulated on-disk install request will be rejected rather than performed as root.

Affected VersionsENISA

electron 42.0.0-alpha.1, < 42.0.0-beta.2
electron < 39.8.10
electron 40.0.0-alpha.1, < 41.10.5

Affected Packages

npm electron fix: 39.8.10, 41.10.5, 42.0.0-beta.2

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 ships a forked copy of the Squirrel.Mac auto-update framework, whose privileged ShipIt helper performs the final install step as root. The vulnerable code (SQRLInstaller.m) reads a serialized install request from an on-disk state file and re-evaluates the targetBundleURL at multiple points in the install signal chain instead of resolving it once. Because the serialized target path is attacker-influenced and not canonicalized or pinned to the bundle that actually launched the installer, a local attacker can exploit the gap between the validation of that path and the subsequent root-privileged file write - the classic CWE-367 time-of-check-to-time-of-use pattern - including via symbolic-link path traversal (Apple platform tag). The upstream fix (PR #50745, commits 01faabfc, 15e2928a, a0f9ff4c, b8f25c4c) resolves the target bundle URL to a canonical, symlink-free path exactly once at the start of installRequest:, rejects requests whose path is not already canonical, threads the resolved URL through every downstream step so validation and the write operate on the same location, and - critically - adds a privilege check when geteuid() == 0 that derives the expected target from _NSGetExecutablePath/realpath and refuses any install whose canonical target is not the .app bundle containing the running installer. The write side in SQRLUpdater.m was also changed to serialize a symlink-resolved bundle URL so the request always carries a canonical path. Note that the real-world attacker benefit here is an overwrite of another app's files as root rather than an inherent code-execution primitive, but overwriting root-owned files of a privileged application can be chained into privilege escalation.

Know when macOS 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 (https://github.com/electron/electron) PRIMARY 6.7 MEDIUM
AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H
vuln.today AI 6.7 MEDIUM

Local access only (AV:L) by an existing user (PR:L); winning a TOCTOU race and an active update flow give AC:H and UI:R; root file overwrite yields full C/I/A:H.

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

Primary rating from Vendor (https://github.com/electron/electron).

CVSS VectorVendor: https://github.com/electron/electron

Attack Vector
Local
Attack Complexity
High
Privileges Required
Low
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

DescriptionCVE.org

Impact

On macOS, Electron bundles the Squirrel.Mac auto-update framework, whose privileged ShipIt helper performs the final step of an update as root. A local attacker could cause that helper to overwrite a different application's files, as root, instead of the app that started the update. Exploitation requires local access to the machine.

Apps are only affected on macOS if they ship Squirrel.Mac-based auto-updates. Apps on other platforms, or that do not use Squirrel.Mac auto-updates, are not affected.

Workarounds

There are no app side workarounds, you must update to a patched version of Electron.

Fixed Versions

  • 42.0.0-beta.2
  • 41.10.5
  • 39.8.10

For more information

If you have any questions or comments about this advisory, email us at [security@electronjs.org](mailto:security@electronjs.org)

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Ubiquitous
Electron underpins a huge share of cross-platform desktop apps
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.1%
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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
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.

More in macOS

View all
CVE-2025-34089 CRITICAL POC
9.3 Jul 03

An unauthenticated remote code execution vulnerability exists in Remote for Mac, a macOS remote control utility develope

CVE-2026-86950 HIGH POC
8.8 Sep 28

Out-of-bounds write in Apple's iOS, iPadOS, and macOS file-parsing code lets remote attackers achieve arbitrary code exe

CVE-2026-20700 HIGH POC
7.8 Feb 11

Apple's kernel across all platforms (iOS, macOS, watchOS, visionOS, tvOS) contains a memory corruption vulnerability (CV

CVE-2022-48618 HIGH
7.0 Jan 09

The issue was addressed with improved checks. Rated high severity (CVSS 7.0). Actively exploited in the wild (cisa kev)

CVE-2024-27822 HIGH POC
7.8 May 14

A logic issue was addressed with improved restrictions. Rated high severity (CVSS 7.8), this vulnerability is no authent

CVE-2023-22809 HIGH POC
7.8 Jan 18

In Sudo before 1.9.12p2, the sudoedit (aka -e) feature mishandles extra arguments passed in the user-provided environmen

CVE-2022-46689 HIGH POC
7.0 Dec 15

A race condition was addressed with additional validation. Rated high severity (CVSS 7.0), this vulnerability is no auth

CVE-2022-32845 CRITICAL POC
10.0 Sep 23

This issue was addressed with improved checks. Rated critical severity (CVSS 10.0), this vulnerability is remotely explo

CVE-2021-44790 CRITICAL POC
9.8 Dec 20

A carefully crafted request body can cause a buffer overflow in the mod_lua multipart parser (r:parsebody() called from

CVE-2025-34192 CRITICAL POC
9.3 Sep 19

Vasion Print (formerly PrinterLogic) Virtual Appliance Host versions prior to 22.0.893 and Application versions prior to

CVE-2025-52841 HIGH POC
8.8 Jul 02

Cross-Site Request Forgery (CSRF) vulnerability in Laundry on Linux, MacOS allows to perform an Account Takeover. This i

CVE-2022-3970 HIGH POC
8.8 Nov 13

A vulnerability was found in LibTIFF. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, no aut

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