Find every Node.js
Servers, container images, CI runners and serverless functions. Run node --version in each and paste it above.
Node.js fix released · 21 October 2026 · update now
On 21 October 2026 Node.js released 22.23.4, 24.22.1 and 26.12.1 to fix a flaw in its built-in Brotli decoder (CVE-2026-111497) that can crash a server and potentially let attackers run code on it. Enter your domain to see whether it runs on Node.js, then paste your version below for an exact answer.
Loading the check …
We'll confirm it for you, free. We find out which Node.js your servers, containers and CI run and whether they have the fix, and update them for you if not. The first assessment is free.
We'll use your email only to answer this request. Privacy notice
Free · One normal page request, no attack traffic · Node.js never shows its version from outside, so the exact answer comes from the version check below. Last updated
Exact answer
Run one of these on your server, in your container or on your CI runner, and paste what it prints. The check runs in your browser; nothing is sent to us.
node --versiondocker run --rm <image> node --versionFROM node:22.23.3-alpinenpm ls express body-parserbun --version
Check every place Node.js runs: production servers, container images, CI runners, build and worker machines.
One file, no dependencies, works on Node.js 16 and newer. It reads the Node.js or Bun that runs it (including builds that use the system Brotli library), your Express and body-parser versions, Brotli calls in your code and the FROM lines of your Dockerfiles, and prints a verdict.
curl -fsSLO https://zybee.ai/node2shell-check.mjs
node node2shell-check.mjsdocker run --rm -v "$PWD":/w -w /w <image> node node2shell-check.mjsnode node2shell-check.mjs --jsonRead-only: it sends nothing anywhere and starts no process. View the script
What happened
Node.js bundles the Brotli compression library. Malformed compressed input can make its decoder write outside its memory buffer, which can crash the process, leak memory and potentially let an attacker run code. Every supported Node.js line was affected before the 21 October update, so the fix is a Node.js update, not an npm package update.
Source: Aikido's write-up of the Node.js security release. Distribution packages (Debian, Ubuntu, Fedora, RHEL, Alpine) may link the system Brotli library instead; check your distribution's advisory.
What to do now
Servers, container images, CI runners and serverless functions. Run node --version in each and paste it above.
Move to 22.23.4, 24.22.1, 26.12.1 or newer, and to 24 or 26 from an end-of-life line. Rebuild container images: a pinned tag such as node:22.23.3-alpine stays affected. Restart running processes.
Reject requests with Content-Encoding: br at your reverse proxy, load balancer or middleware. That reduces inbound exposure only: Brotli responses your app fetches from other servers are not covered.
After the update
The Zybee Exposure Report checks what your website and app show the internet from the outside: outdated software, exposed keys and files, forgotten admin pages and missing protections. Every finding is reviewed by a person, with a clear order of what to fix first.
Questions
An out-of-bounds write in the Brotli decoder that Node.js bundles, triggered by malformed compressed input. It can crash a Node.js process, leak memory and potentially allow remote code execution. Node.js rates it high, one step below critical. The fix shipped on 21 October 2026.
Node.js 26.12.1, 24.22.1 and 22.23.4, and any newer patch release on those lines. Node.js 25.x, 23.x, 20.x and older are end of life and get no fix: move to 24 (LTS) or 26. Bun is fixed in 1.4.4.
Possibly without knowing it. Express 5 and body-parser 2.x decompress Brotli request bodies automatically, and fetch() decompresses Brotli responses automatically. Updating Node.js is the only complete fix.
Node.js never sends its version. Express says only "Express", Next.js "Next.js", Nuxt "Nuxt". So the domain check tells you whether your site runs on Node.js, and the version box tells you, from your own node --version, whether that Node.js has the fix.
If a Node.js server renders your pages or runs your API routes, yes, unless that Node.js is updated. A fully static export served from a CDN runs no Node.js at request time, but your build machines still do.
Vercel added firewall rules on 21 October 2026 that block the attack in incoming requests. Requests your app makes to other servers with fetch() are not covered by those rules, so make sure your functions run on a fixed Node.js version.
No exploitation in the wild had been reported as of 22 October 2026. A public proof of concept worked only against a deliberately weakened test build, but researchers reported code execution on an unmodified Node.js 24.22.0 image on Linux arm64. Update anyway.
The Node.js advisory lists none. Rejecting Content-Encoding: br requests at a proxy or in middleware reduces inbound exposure only; it does not cover Brotli responses your app fetches.
Yes. We request your start page once, exactly like a visitor's browser, and read the server headers and framework markers it sends. We send no compressed data and nothing that tests the flaw. Repeat checks within ten minutes reuse the first result. We keep the domain, the result and a pseudonymised form of your IP address for 90 days to prevent abuse. The version check runs in your browser only.