Skip to content

[simplex]: patch Node2Shell (CVE-2026-111497) - #1440

Merged
seunlanlege merged 1 commit into
mainfrom
simplex-node-24.22.1
Oct 24, 2026
Merged

seunlanlege merged 1 commit into
mainfrom
simplex-node-24.22.1

Conversation

@seunlanlege

Copy link
Copy Markdown
Member

Why

CVE-2026-111497 (Node2Shell) is an out-of-bounds write in Node's Brotli decoder. It can lead to code execution.

Simplex decodes Brotli through fetch(), which decompresses Content-Encoding: br responses on its own. So a malicious or compromised RPC, orderbook, indexer or bundler endpoint could run code in the solver.

Remote access is not a way in. The embedded SSH server only negotiates zlib@openssh.com, and UiServer reads request bodies as raw bytes. The exposure is the runtime: Docker and desktop both shipped Node 24.19.0.

What changes

  • Docker: builder and runtime stages move to node:24.22.1 and node:24.22.1-slim.
  • Desktop: stages Node 24.22.1. The release is signed by the key stage-node.mjs already pins. The release workflow packages on 24.22.1, and the staging check expects v24.22.1.
  • engines.node: now ^22.23.4 || ^24.22.1 || >=26.12.1, the first patched release on each line. Node 23 and 25 are end of life and never got the fix, so they leave the range. engines stays advisory (no engine-strict), so an older Node gets a warning, not a failed install.
  • Versions: simplex and simplex-desktop 0.18.3 → 0.18.4.
  • Docs: the "Node 22.16 or newer" lines now list the new versions. The note is sdk/packages/simplex/docs/ai/changelog/2026-10-23-node-runtime-node2shell-fix.md.

Electron has no patched release yet. The packaged solver runs on the staged Node, not Electron's.

Validation

  • stage-node.mjs --target linux-x64 downloaded 24.22.1 and verified the signature and checksum. The staged binary reports v24.22.1.
  • stage-node.test.ts and package-release.test.ts pass (26 tests).
  • verify-versions.mjs passes.
  • The engines range accepts 22.23.4, 24.22.1, 26.12.1 and 27.0.0. It rejects 22.23.3, 23.x, 24.22.0, 25.x and 26.12.0.
  • Both Docker tags exist for amd64 and arm64. The image was not built locally.

After merge

Tag simplex-v0.18.4 on the merge commit. The SDK is unchanged, so it needs no tag.

… fix, 0.18.4

CVE-2026-111497 (Node2Shell) is an out-of-bounds write in Node's Brotli
decoder. fetch() decodes Brotli responses, so a malicious or compromised
RPC, orderbook, indexer or bundler endpoint could run code in the solver.

- Docker builder and runtime stages move to node:24.22.1 / 24.22.1-slim.
- The desktop app stages Node 24.22.1 (same release signing key), and
  its release and test workflows expect it.
- engines.node is ^22.23.4 || ^24.22.1 || >=26.12.1, the first patched
  release on each line.
- simplex and simplex-desktop 0.18.3 -> 0.18.4.
@seunlanlege seunlanlege changed the title [simplex]: run on Node 24.22.1 and require a Node with the Node2Shell fix, 0.18.4 [simplex]: patch Node2Shell (CVE-2026-111497) with Node 24.22.1, 0.18.4 Oct 23, 2026
@seunlanlege seunlanlege changed the title [simplex]: patch Node2Shell (CVE-2026-111497) with Node 24.22.1, 0.18.4 [simplex]: patch Node2Shell (CVE-2026-111497) Oct 23, 2026
@seunlanlege
seunlanlege merged commit d635bf2 into main Oct 24, 2026
14 of 15 checks passed
@seunlanlege
seunlanlege deleted the simplex-node-24.22.1 branch October 24, 2026 07:50
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.

2 participants