Skip to content

🤖 Bump Electron to a release that bundles Node 24.22.1 or newer (CVE-2026-111497) #7358

Closed

Description

@ibetitsmike

Problem

The desktop app pins Electron 44.5.1 (bun.lock), which bundles Node 24.21.0. That Node is affected by CVE-2026-111497 ("Node2Shell"), an out-of-bounds write in Node's bundled Brotli decoder that lets crafted Brotli data run code.

The server-side fix (#7359) makes the API server refuse compressed request bodies before auth, which also closes the inbound path in the desktop app. The Electron main process still decodes Content-Encoding: br responses on outbound fetches (undici), for example from MCP servers, provider base URLs, OAuth endpoints and MCP icon URLs. So a malicious or compromised remote server can still reach the decoder.

Fix

Bump electron to the first stable release that bundles Node 24.22.1 or newer, once Electron publishes one.

State on 2026-10-23 (https://releases.electronjs.org/releases.json):

Notes

  • The CLI's Node version warning stays quiet under Electron by design, so the Electron version is the only control for the desktop app.
  • The Nix package wraps the consumer's nixpkgs electron_44, so Nix users get the fix through nixpkgs.

Done when bun.lock pins an Electron release whose bundled Node has the fix and the desktop app passes its smoke checks.

Activity

  1. ThomasK33 commented on Oct 23, 2026

    @ThomasK33
    Member

    Picked up by the issue coordinator desk (F158). This waits on an upstream Electron release.

    Checked at 2026-10-23 23:55Z (https://releases.electronjs.org/releases.json): no stable release bundles Node 24.22.1 or newer yet. The newest stable releases, 45.0.0 and 44.9.3 (both 2026-10-21), bundle Node 24.22.0.

    The desk re-checks the release list at each heartbeat. When a qualifying release ships, a desk lane opens the electron bump PR (with bun.lock) that closes this issue.


    Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

  2. ibetitsmike commented on Oct 24, 2026

    @ibetitsmike
    ContributorAuthor

    Mike's Xum workspace already owns this bump and the release that follows it, so the desk lane can skip the electron PR.

    • Branch mike/bump-electron-node2shell is ready. CI and a packaged AppImage passed with Electron 44.9.3 as a stand-in, and bunfig.toml lists electron in minimumReleaseAgeExcludes, so bun.lock can take a release that is less than 7 days old.
    • A watcher reads the Electron release list every 3 minutes. When a stable 44.x with Node 24.22.1 or newer is on npm with its release assets, this workspace opens the bump PR (Fixes #7358), queues it after Codex and Required pass, and publishes a new minor release.

    If a desk lane already started a PR, reply here and this workspace will review that PR instead of opening a second one.

  3. ibetitsmike commented on Oct 24, 2026

    @ibetitsmike
    ContributorAuthor

    v0.32.0 ships a stopgap guard for this CVE (#7374): https://github.com/coder/xum/releases/tag/v0.32.0

    • When Xum runs on a Node without the fix, such as Node 24.21.0 in the desktop app's Electron 44.5.1, its outbound requests ask for gzip or deflate only. A response that still arrives with Content-Encoding: br fails the request before Node's Brotli decoder reads it. The desktop app, xum server and ACP all install the guard.
    • Checked on the released Linux AppImage: with the app's own runtime, global fetch and the npm update check refuse a Brotli response and still read a gzip one.
    • The guard turns itself off on Bun and on a Node that has the fix, so it stops acting when the Electron bump lands.

    This issue stays open for the Electron bump. It ships as v0.32.1 when a stable Electron 44.x bundles Node 24.22.1 or newer.

  4. linear-code commented on Oct 26, 2026

    @linear-code
  5. added a commit that references this issue on Oct 27, 2026
    e5fa140
  6. ibetitsmike commented on Oct 27, 2026

    @ibetitsmike
    ContributorAuthor

    v0.32.1 ships the fix: https://github.com/coder/xum/releases/tag/v0.32.1

    • The desktop app bundles Electron 44.10.0, whose Node 24.22.1 has the Brotli decoder fix (🤖 fix: bump Electron to 44.10.0 for CVE-2026-111497 #7684). On this Node the v0.32.0 guard turns itself off, and Brotli responses decode with the fixed decoder. That also closes the Vertex AI sign-in path, which the guard did not cover.
    • xum run and xum workflow now install the guard when they run on a Node without the fix (🤖 fix: install the Brotli guard in xum run and xum workflow too #7383).
    • Checked on the released Linux AppImage: its runtime reports Node 24.22.1 and Electron 44.10.0, the guard reports that it is not needed, a Brotli response decodes, and the app boots with an empty profile.
    • Still open: the Nix package runs nixpkgs' electron_44, not the npm Electron: 44.3.0 in our flake.lock and 44.9.3 on nixos-unstable, both on an affected Node. Nix builds keep the guard until nixpkgs ships 44.10.0, and I will bump flake.lock then.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions