CVE-2026-106074: Node.js crypto.randomUUID() and randomInt() entropy caches are saved into user-land startup snapshots and SEAs
CVE-2026-106074 is a medium-severity Node.js crypto flaw that only matters if you ship a user-land startup snapshot or a single executable application (SEA). Unused entropy cached for crypto.randomUUID() and crypto.randomInt() was saved into the snapshot, so every process started from it produced the same first UUIDs and random integers. Fix it with Node.js 22.23.4, 24.22.1 or 26.12.1 and rebuild the snapshot or SEA.
Published Oct 21, 2026 · Analysis Oct 21, 2026
What an attacker can do
To make crypto.randomUUID() and crypto.randomInt() fast, Node.js fills a small cache of random bytes ahead of time and hands values out from it. A startup snapshot captures the JavaScript heap after your setup code runs, so processes start faster. If that setup code called randomUUID() or randomInt() even once, the partly used cache went into the snapshot. Every process deserialized from it started with the same leftover bytes and returned the same sequence of values until the cache ran out.
In practice, values that should be unique and unguessable repeat across machines and restarts: request IDs, idempotency keys, session or invitation tokens, temporary file names, or random choices used for security. An attacker who obtains one copy of the SEA binary or snapshot, or who observes the first values from one instance, can predict the values other instances will produce. Collisions also break logic that assumes UUIDs are unique. The fix clears the caches after user serialization callbacks and before user deserialization callbacks, which also covers caches refilled by microtasks, next ticks or exit handlers.
Who is affected
Affected: Node.js 22.x before 22.23.4, 24.x before 24.22.1 and 26.x before 26.12.1, but only for processes started from a user-land startup snapshot (built with --build-snapshot or the node:v8 startupSnapshot API) or an SEA built with a snapshot. Plain node app.js is not affected. To check:
node -v
grep -rn "build-snapshot\|startupSnapshot\|useSnapshot" --include=*.json --include=*.js --include=*.mjs .The SEA configuration file shows useSnapshot when a snapshot is embedded.
How to fix it
Upgrade the build toolchain to Node.js 22.23.4, 24.22.1 or 26.12.1, then rebuild every snapshot blob and every SEA binary. Upgrading the runtime alone does not fix an SEA, because the snapshot is baked into the file you ship.
After rebuilding, rotate anything security-relevant that affected binaries generated with randomUUID() or randomInt() early in their life, such as long-lived tokens or keys.
How to tell if you were hit
Look for duplicate UUIDs or random IDs across instances in logs and databases, especially among the first values each process produced after start. Unique-constraint violations on UUID columns after deploys of an SEA build are a strong sign. Comparing the first few request IDs from two freshly started instances shows the problem directly.
Original advisory
From the National Vulnerability Database. This product uses the NVD API but is not endorsed or certified by the NVD.
Node.js keeps caches of pre-generated random data for crypto.randomUUID() and crypto.randomInt(). Unused cache entries were saved into user-land startup snapshots and single executable applications, so every process started from the same snapshot replayed the same random values. The fix clears the caches around snapshot serialization and deserialization. Affected: Node.js 22.x before 22.23.4, 24.x before 24.22.1 and 26.x before 26.12.1. Fixed in Node.js 22.23.4, 24.22.1 and 26.12.1, released October 21, 2026.
Credited to gesposito.
Questions
- Am I affected by CVE-2026-106074 if I do not use snapshots?
No. The flaw only affects processes started from a user-land startup snapshot or a single executable application built with one. A normal node app.js process fills its random caches fresh at startup.
- Is upgrading Node.js enough to fix CVE-2026-106074?
Not for SEAs or prebuilt snapshot blobs. The repeated values are stored inside the snapshot you built, so you must rebuild it with a fixed Node.js and redeploy. Rotate tokens that affected builds generated.
References
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. The analysis is written by an AI model from the sources listed above and checked by automated rules before it is published. Check versions against the vendor's advisory before you act. Methodology
Coverage on the Beam blog
More Node.js vulnerabilities
All Node.js entriesCVE-2026-105481
Node.js keep-alive socket processes a response that was written before the request was sent
mediumOct 21, 2026CVE-2026-105482
Node.js dns.resolve truncates names containing NUL char
highOct 21, 2026CVE-2026-105483
Node.js TLS certificate hostname bypass when the IP is written fullwidth digits
highOct 21, 2026CVE-2026-106069
Node.js TLS certificate hostname bypass when the host loosely resolves to an IP address
highOct 21, 2026CVE-2026-106070
Node.js ZipFile returns attacker-controlled prefix bytes after failed ZIP header validation
lowOct 21, 2026CVE-2026-106071
Node.js Permission Model filesystem over-grant via wildcard radix lookup
lowOct 21, 2026
