Skip to content

chore(deps): update dependency electron to v40.8.4 [security]#692

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/npm-electron-vulnerability
Open

chore(deps): update dependency electron to v40.8.4 [security]#692
renovate[bot] wants to merge 1 commit intomainfrom
renovate/npm-electron-vulnerability

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate bot commented Apr 3, 2026

This PR contains the following updates:

Package Change Age Confidence
electron 40.0.040.8.4 age confidence

GitHub Vulnerability Alerts

CVE-2026-34766

Impact

The select-usb-device event callback did not validate the chosen device ID against the filtered list that was presented to the handler. An app whose handler could be influenced to select a device ID outside the filtered set would grant access to a device that did not match the renderer's requested filters or was listed in exclusionFilters.

The WebUSB security blocklist remained enforced regardless, so security-sensitive devices on the blocklist were not affected. The practical impact is limited to apps with unusual device-selection logic.

Workarounds

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

Fixed Versions

  • 41.0.0-beta.8
  • 40.7.0
  • 39.8.0
  • 38.8.6

For more information

If there are any questions or comments about this advisory, send an email to security@electronjs.org

CVE-2026-34767

Impact

Apps that register custom protocol handlers via protocol.handle() / protocol.registerSchemesAsPrivileged() or modify response headers via webRequest.onHeadersReceived may be vulnerable to HTTP response header injection if attacker-controlled input is reflected into a response header name or value.

An attacker who can influence a header value may be able to inject additional response headers, affecting cookies, content security policy, or cross-origin access controls.

Apps that do not reflect external input into response headers are not affected.

Workarounds

Validate or sanitize any untrusted input before including it in a response header name or value.

Fixed Versions

  • 41.0.3
  • 40.8.3
  • 39.8.3
  • 38.8.6

For more information

If there are any questions or comments about this advisory, send an email to security@electronjs.org

CVE-2026-34768

Impact

On Windows, app.setLoginItemSettings({openAtLogin: true}) wrote the executable path to the Run registry key without quoting. If the app is installed to a path containing spaces, an attacker with write access to an ancestor directory may be able to cause a different executable to run at login instead of the intended app.

On a default Windows install, standard system directories are protected against writes by standard users, so exploitation typically requires a non-standard install location.

Workarounds

Install the application to a path without spaces, or to a location where all ancestor directories are protected against unauthorized writes.

Fixed Versions

  • 41.0.0-beta.8
  • 40.8.0
  • 39.8.1
  • 38.8.6

For more information

If there are any questions or comments about this advisory, send an email to security@electronjs.org

CVE-2026-34769

Impact

An undocumented commandLineSwitches webPreference allowed arbitrary switches to be appended to the renderer process command line. Apps that construct webPreferences by spreading untrusted configuration objects may inadvertently allow an attacker to inject switches that disable renderer sandboxing or web security controls.

Apps are only affected if they construct webPreferences from external or untrusted input without an allowlist. Apps that use a fixed, hardcoded webPreferences object are not affected.

Workarounds

Do not spread untrusted input into webPreferences. Use an explicit allowlist of permitted preference keys when constructing BrowserWindow or webContents options from external configuration.

Fixed Versions

  • 41.0.0-beta.8
  • 40.7.0
  • 39.8.0
  • 38.8.6

For more information

If there are any questions or comments about this advisory, send an email to security@electronjs.org

CVE-2026-34770

Impact

Apps that use the powerMonitor module may be vulnerable to a use-after-free. After the native PowerMonitor object is garbage-collected, the associated OS-level resources (a message window on Windows, a shutdown handler on macOS) retain dangling references. A subsequent session-change event (Windows) or system shutdown (macOS) dereferences freed memory, which may lead to a crash or memory corruption.

All apps that access powerMonitor events (suspend, resume, lock-screen, etc.) are potentially affected. The issue is not directly renderer-controllable.

Workarounds

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

Fixed Versions

  • 41.0.0-beta.8
  • 40.8.0
  • 39.8.1
  • 38.8.6

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34771

Impact

Apps that register an asynchronous session.setPermissionRequestHandler() may be vulnerable to a use-after-free when handling fullscreen, pointer-lock, or keyboard-lock permission requests. If the requesting frame navigates or the window closes while the permission handler is pending, invoking the stored callback dereferences freed memory, which may lead to a crash or memory corruption.

Apps that do not set a permission request handler, or whose handler responds synchronously, are not affected.

Workarounds

Respond to permission requests synchronously, or deny fullscreen, pointer-lock, and keyboard-lock requests if an asynchronous flow is required.

Fixed Versions

  • 41.0.0-beta.8
  • 40.7.0
  • 39.8.0
  • 38.8.6

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34772

Impact

Apps that allow downloads and programmatically destroy sessions may be vulnerable to a use-after-free. If a session is torn down while a native save-file dialog is open for a download, dismissing the dialog dereferences freed memory, which may lead to a crash or memory corruption.

Apps that do not destroy sessions at runtime, or that do not permit downloads, are not affected.

Workarounds

Avoid destroying sessions while a download save dialog may be open. Cancel pending downloads before session teardown.

Fixed Versions

  • 41.0.0-beta.7
  • 40.7.0
  • 39.8.0
  • 38.8.6

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34773

Impact

On Windows, app.setAsDefaultProtocolClient(protocol) did not validate the protocol name before writing to the registry. Apps that pass untrusted input as the protocol name may allow an attacker to write to arbitrary subkeys under HKCU\Software\Classes\, potentially hijacking existing protocol handlers.

Apps are only affected if they call app.setAsDefaultProtocolClient() with a protocol name derived from external or untrusted input. Apps that use a hardcoded protocol name are not affected.

Workarounds

Validate the protocol name matches /^[a-zA-Z][a-zA-Z0-9+.-]*$/ before passing it to app.setAsDefaultProtocolClient().

Fixed Versions

  • 41.0.0
  • 40.8.1
  • 39.8.1
  • 38.8.6

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34774

Impact

Apps that use offscreen rendering and allow child windows via window.open() may be vulnerable to a use-after-free. If the parent offscreen WebContents is destroyed while a child window remains open, subsequent paint frames on the child dereference freed memory, which may lead to a crash or memory corruption.

Apps are only affected if they use offscreen rendering (webPreferences.offscreen: true) and their setWindowOpenHandler permits child windows. Apps that do not use offscreen rendering, or that deny child windows, are not affected.

Workarounds

Deny child window creation from offscreen renderers in your setWindowOpenHandler, or ensure child windows are closed before the parent is destroyed.

Fixed Versions

  • 41.0.0
  • 40.7.0
  • 39.8.1

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34775

Impact

The nodeIntegrationInWorker webPreference was not correctly scoped in all configurations. In certain process-sharing scenarios, workers spawned in frames configured with nodeIntegrationInWorker: false could still receive Node.js integration.

Apps are only affected if they enable nodeIntegrationInWorker. Apps that do not use nodeIntegrationInWorker are not affected.

Workarounds

Avoid enabling nodeIntegrationInWorker in apps that also open child windows or embed content with differing webPreferences.

Fixed Versions

  • 41.0.0
  • 40.8.4
  • 39.8.4
  • 38.8.6

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34776

Impact

On macOS and Linux, apps that call app.requestSingleInstanceLock() were vulnerable to an out-of-bounds heap read when parsing a crafted second-instance message. Leaked memory could be delivered to the app's second-instance event handler.

This issue is limited to processes running as the same user as the Electron app.

Apps that do not call app.requestSingleInstanceLock() are not affected. Windows is not affected by this issue.

Workarounds

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

Fixed Versions

  • 41.0.0
  • 40.8.1
  • 39.8.1
  • 38.8.6

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34777

Impact

When an iframe requests fullscreen, pointerLock, keyboardLock, openExternal, or media permissions, the origin passed to session.setPermissionRequestHandler() was the top-level page's origin rather than the requesting iframe's origin. Apps that grant permissions based on the origin parameter or webContents.getURL() may inadvertently grant permissions to embedded third-party content.

The correct requesting URL remains available via details.requestingUrl. Apps that already check details.requestingUrl are not affected.

Workarounds

In your setPermissionRequestHandler, inspect details.requestingUrl rather than the origin parameter or webContents.getURL() when deciding whether to grant fullscreen, pointerLock, keyboardLock, openExternal, or media permissions.

Fixed Versions

  • 41.0.0
  • 40.8.1
  • 39.8.1
  • 38.8.6

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34778

Impact

A service worker running in a session could spoof reply messages on the internal IPC channel used by webContents.executeJavaScript() and related methods, causing the main-process promise to resolve with attacker-controlled data.

Apps are only affected if they have service workers registered and use the result of webContents.executeJavaScript() (or webFrameMain.executeJavaScript()) in security-sensitive decisions.

Workarounds

Do not trust the return value of webContents.executeJavaScript() for security decisions. Use dedicated, validated IPC channels for security-relevant communication with renderers.

Fixed Versions

  • 41.0.0
  • 40.8.1
  • 39.8.1
  • 38.8.6

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34779

Impact

On macOS, app.moveToApplicationsFolder() used an AppleScript fallback path that did not properly handle certain characters in the application bundle path. Under specific conditions, a crafted launch path could lead to arbitrary AppleScript execution when the user accepted the move-to-Applications prompt.

Apps are only affected if they call app.moveToApplicationsFolder(). Apps that do not use this API are not affected.

Workarounds

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

Fixed Versions

  • 41.0.0-beta.8
  • 40.8.0
  • 39.8.1
  • 38.8.6

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org

CVE-2026-34780

Impact

Apps that pass VideoFrame objects (from the WebCodecs API) across the contextBridge are vulnerable to a context isolation bypass. An attacker who can execute JavaScript in the main world (for example, via XSS) can use a bridged VideoFrame to gain access to the isolated world, including any Node.js APIs exposed to the preload script.

Apps are only affected if a preload script returns, resolves, or passes a VideoFrame object to the main world via contextBridge.exposeInMainWorld(). Apps that do not bridge VideoFrame objects are not affected.

Workarounds

Do not pass VideoFrame objects across contextBridge. If an app needs to transfer video frame data, serialize it to an ArrayBuffer or ImageBitmap before bridging.

Fixed Versions

  • 41.0.0-beta.8
  • 40.7.0
  • 39.8.0

For more information

If there are any questions or comments about this advisory, please email security@electronjs.org


Release Notes

electron/electron (electron)

v40.8.4: electron v40.8.4

Compare Source

Release Notes for v40.8.4

Fixes

  • Fixed an issue where nodeIntegrationInWorker overrides in setWindowOpenHandler were not honored for child windows sharing a renderer process with their opener. #​50467 (Also in 38, 39, 41)
  • Fixed crash when handling JavaScript dialogs from windows opened with invalid or empty URLs. #​50401 (Also in 39, 41, 42)
  • Fixed improper focus tracking in BaseWindow on MacOS. #​50337 (Also in 39, 41, 42)
  • Fixed logic bug that rendered certain window types un-resizable on MAS builds. #​50355 (Also in 41, 42)
  • Fixed utilityProcess exit event reporting incorrect exit codes on Windows when the exit code has the high bit. #​50387 (Also in 41, 42)
  • Fixed window freeze when failing to enter/exit fullscreen on macOS. #​50344 (Also in 39, 41, 42)

Other Changes

v40.8.3: electron v40.8.3

Compare Source

Release Notes for v40.8.3

Fixes

  • Added additional ASAR support to additional fs copy methods. #​50287 (Also in 39, 41, 42)
  • Fixed an issue where some DevTools functionality didn't work as expected. #​50275 (Also in 41, 42)
  • Fixed user resizing of transparent windows on win32 platform. #​50301 (Also in 39, 41, 42)

v40.8.2: electron v40.8.2

Compare Source

Release Notes for v40.8.2

Other Changes

  • Backported fix for b/491421267. #​50229
  • Fixed an issue where running app icons were not correctly retrieved on macOS Tahoe. #​50188

v40.8.1: electron v40.8.1

Compare Source

Release Notes for v40.8.1

Fixes

  • Added validation to protocol client methods to reject protocol names that do not conform to the RFC 3986 URI scheme grammar. #​50158 (Also in 38, 39, 41)
  • Fixed an issue on macOS where calling autoUpdater.quitAndInstall() could fail if checkForUpdates() was called again after an update was already downloaded. #​50216 (Also in 39, 41)
  • Fixed an issue where Chrome Devtools menus may not appear in certain embedded windows. #​50138 (Also in 39, 41)
  • Fixed an issue where additionalData passed to app.requestSingleInstanceLock on Windows could be truncated or fail to deserialize in the primary instance's second-instance event. #​50162 (Also in 38, 39, 41)
  • Fixed an issue where screen.getCursorScreenPoint() crashed on Wayland when it was called before a BrowserWindow had been created. #​50104 (Also in 39, 41)
  • Fixed an issue where calling setBounds on a WebContentsView could trigger redundant page-favicon-updated events even when the favicon had not changed. #​50084 (Also in 39, 41)
  • Fixed an issue where invalid characters in custom protocol or webRequest response header values were not rejected. #​50131 (Also in 38, 39, 41)
  • Fixed an issue where permission and device-chooser handlers received the top-level page origin instead of the requesting subframe's origin. #​50149 (Also in 38, 39, 41)
  • Fixed an issue where traffic light buttons would flash at position (0,0) when restoring a window with a custom trafficLightPosition from minimization on macOS. #​50207 (Also in 39, 41)
  • Fixed bug where opening a message box immediately upon closing a child window may cause the parent window to freeze on Windows. #​50189 (Also in 39, 41)
  • Reverted AltGr key fix that caused menu bar to no longer show on Windows. #​50110 (Also in 39, 41)

Other Changes

  • Backported fix for chromium:485622239. #​50168

v40.8.0: electron v40.8.0

Compare Source

Release Notes for v40.8.0

Features

  • Added a reason property to the Notification 'closed' event on Windows to allow developers to know the reason the Notification was dismissed. #​50030 (Also in 41)

Fixes

  • Fixed shutdown crash on windows when hidden titlebar is enabled. #​50053 (Also in 39, 41)

Other Changes

  • Updated Chromium to 144.0.7559.236. #​50060

v40.7.0: electron v40.7.0

Compare Source

Release Notes for v40.7.0

Features

  • Added support for --experimental-transform-types. #​49883 (Also in 39, 41)

Fixes

  • Allow dynamically updating menu item labels, sublabels, and icons. #​49973 (Also in 41)
  • Fixed safeStorage failing to clean up legacy keychain entries when migrating to suffixed account names on macOS, and fixed first launch creating entries with the wrong (unsuffixed) account name. #​49817
  • Fixed a bug that cause offscreen rendering doesn't have valid screen info and unable to get valid result of related media queries.
    • Added webPreference.offscreen.deviceScaleFactor to allow user specify a value, instead of using user's primary display's value. #​49681
  • Fixed a macOS crash when creating a new tab from the tab overview. #​49934 (Also in 41)
  • Fixed an issue on macOS where Universal Links were not delivered to app.on('continue-activity') on cold launch when NSUserActivity.userInfo was nil. #​50005 (Also in 39, 41)
  • Fixed an issue where VideoFrame objects returned through contextBridge had an incorrect prototype. #​50022 (Also in 39, 41)
  • Fixed an issue where malformed custom toastXml could cause a Notification crash. #​49952 (Also in 41)
  • Fixed menu bar hiding after a call to win.setFullScreen(false) when not in fullscreen on Linux. #​49994 (Also in 41)
  • Fixed menus to correctly emit menu-will-close event when closed after any submenu has been open. #​49963 (Also in 41)

Other Changes

v40.6.1: electron v40.6.1

Compare Source

Release Notes for v40.6.1

Fixes

  • Fixed globalShortcut not working on Wayland with GlobalShortcutsPortal feature enabled. #​49870 (Also in 41)
  • Fixed an issue where making a window fullscreen on Windows, minimizing it and then restoring it broke previous fullscreen state. #​49892 (Also in 41)
  • Fixed an issue where menu item enabled state wasn't updated during key equivalent dispatch when the menu was closed on macOS. #​49889 (Also in 39, 41)
  • Fixed an issue where pressing AltGr could activate or focus the menu bar. #​49915 (Also in 39, 41)
  • Fixed an issue where setting zoomFactor in setWindowOpenHandler's overrideBrowserWindowOptions had no effect on windows opened via window.open(). #​49909 (Also in 41)
  • Fixed draggable regions not updating position when DevTools is docked to the left or right in a frameless window. #​49847 (Also in 39, 41)
  • Fixed memory leak when setting icons on Linux/GTK. #​49898 (Also in 38, 39, 41)
  • Fixed startup crash when V8 sandbox is disabled. #​49884 (Also in 41)

Other Changes

  • Fixed crash in platform_util::Beep() on Linux. #​49864 (Also in 41)
  • Updated Chromium to 144.0.7559.220. #​49869

v40.6.0: electron v40.6.0

Compare Source

Release Notes for v40.6.0
Features
  • Added the ability to disable auto-focusing of WebContents on navigation using webPreferences.focusOnNavigation. #​49512 (Also in 41)
Fixes
  • Fixed an issue where frameless windows had resize issues in Mac App Store builds. #​49856

v40.5.0: electron v40.5.0

Compare Source

Release Notes for v40.5.0
Features
  • Added support for long-animation-frame script attribution (via --enable-features=AlwaysLogLOAFURL). #​49772 (Also in 41)
  • Extended actions support for Windows notifications to include buttons, select dropdowns, and replies. #​49786 (Also in 41)
Fixes
  • Addressed upstream Chromium shift to enable CoreAudio Tap API for audio capture used in electron's desktopCapturer (🍏 macOS). #​49741 (Also in 39, 41)
  • Made pointer lock work on Wayland. #​49283
Other Changes

v40.4.1: electron v40.4.1

Compare Source

Release Notes for v40.4.1

Other Changes

v40.4.0: electron v40.4.0

Compare Source

Release Notes for v40.4.0

Features

  • Added a disclaim option to the UtilityProcess API to allow for TCC disclaiming on macOS. #​49695

v40.3.0: electron v40.3.0

Compare Source

Release Notes for v40.3.0

Fixes

  • Fixed an issue where native modules would either crash or not compile for MacOS 12. #​49702 (Also in 41)
  • Fixed an issue where role-based menu items were incorrectly returning null for their accelerator property. #​49669 (Also in 39, 41)

Other Changes

v40.2.1: electron v40.2.1

Compare Source

Release Notes for v40.2.1

Other Changes

  • Refactored our MSIX updater code to use an upstream Chromium pattern and eliminates the need for special exception handling build flags. #​49687 (Also in 39, 41)

v40.1.0: electron v40.1.0

Compare Source

Release Notes for v40.1.0

Features

  • DevTools errors are no longer printed to console. #​49359

Fixes

  • Fixed setRepresentedFilename() not setting AXDocument accessibility attribute on macOS. #​49417 (Also in 39)
  • Fixed a potential race condition crash when opening DevTools. #​49422 (Also in 39)
  • Fixed an issue in chrome://accessibility. #​49560 (Also in 39, 41)
  • Fixed an issue where shell.writeShortcutLink was throwing TypeError: Insufficient number of arguments when called with just [(path, options)]. #​49501 (Also in 39, 41)
  • Fixed crash in platform_util::Beep() on Linux. #​49482 (Also in 39, 41)
  • Made toplevel icon Wayland protocol work. #​49414 (Also in 39)

Other Changes

Unknown

  • Fixed an issue where some packages weren't correctly filtered on macOS in dialogs. #​49473 (Also in 38, 39, 41)

Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 3, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants