Node.js Security Releases March 2026

A __proto__ header just nuked your server. Node.js's March 24, 2026 security releases fix that—and seven other nasties lurking in your code.

Node.js security release announcement with vulnerability icons and update badge

Key Takeaways

  • Eight vulnerabilities patched across Node 20.x-25.x: crashes, leaks, permission bypasses.
  • Permission Model riddled with holes—experimental and risky for now.
  • Update immediately; test HTTP/2, TLS, JSON.parse endpoints.

Server screams. Process dies. All because some idiot — or attacker — slipped a proto header into an HTTP request.

That’s Node.js for you, folks. On March 24, 2026, the Node.js Project rolled out security updates for 25.x, 24.x, 22.x, and 20.x lines. Eight vulnerabilities patched. Some crash your app outright. Others leak timing secrets or punch holes in your shiny new Permission Model.

Node.js security releases like these? They’re not optional. They’re your firewall against the internet’s underbelly.

Remember CVE-2026-21637? It’s Back—with a Vengeance

They thought they fixed it. Nope.

A flaw in Node.js TLS error handling leaves SNICallback invocations unprotected against synchronous exceptions, while the equivalent ALPN and PSK callbacks were already addressed in CVE-2026-21637. This represents an incomplete fix of that prior vulnerability.

SNICallback throws on bad input? Boom — uncaught exception. Your TLS server flatlines. Affects 20.x through 25.x. Props to mbarbs for spotting it, mcollina for the band-aid.

Here’s my hot take: Node.js TLS stack feels like a Jenga tower. Pull one block — half the game topples. We’ve seen this before with OpenSSL heartbleeds back in 2014. History rhymes, developers. Don’t repeat it.

And that proto header bomb? Pure prototype pollution poetry.

When req.headersDistinct hits a proto key, it poisons Object.prototype. Next .push() call? TypeError city. Uncatchable, they say. Wrap everything in try/catch or die trying. Hits all HTTP servers on 20.x-25.x. yushengchen reported; mcollina fixed.

Hilarious, right? No. Your production app just became a DoS playground.

Is Node.js’s Permission Model a Permission to Hack?

–permission flag sounds great. Lock down your Node. But wait.

Unix Domain Sockets? No checks. Fire up a UDS server sans –allow-net, and boom — local IPC chats with the world. Bypasses your network cage entirely.

As a result, code running under –permission without –allow-net can create and expose local IPC endpoints, allowing communication with other processes on the same host outside of the intended network restriction boundary.

25.x only, experimental feature. xavlimsg found it; RafaelGSS squashed it.

But let’s call the hype: Permission Model’s half-baked. It’s like giving a toddler the car keys — cute until the crash. My prediction? More holes incoming. Node’s rushing sandboxing while the web’s full of wolves. Fix the foundation first, guys.

Then fs.realpathSync.native(). No read perms checked. Sneak peeks at files, symlinks, directories. Despite –allow-fs-read limits. Same sloppy enforcement.

25.x again. Permission Model strikes twice.

URL parsing? Assertion failure on bad IDNs. 24.x, 25.x crash. wooffie reported; RafaelGSS fixed. Simple malformation, native boom.

Timing Attacks and Memory Hoggers: The Sneaky Killers

HMAC verification? Non-constant-time. Leaks bytes via timing side-channels.

Node.js already provides timing-safe comparison primitives used elsewhere in the codebase, indicating this is an oversight rather than an intentional design decision.

20.x-25.x. x_probe sniffed it; panva patched. In a world of Spectre/Meltdown, this is amateur hour.

HTTP/2 servers: Client spams WINDOW_UPDATE on stream 0. Window overflows 2^31-1. Memory leak. Http2Session never cleans up. GOAWAY sent, but leak persists. 20-25. galbarnahum reported; RafaelGSS again.

V8 string hashing? Integer strings hash to numbers. Predictable collisions. Hammer JSON.parse() with crafted input — performance nosedive. DoS via hash flood. 20.x-25.x. sharp_edged nailed it; joyeecheung fixed.

Eight flaws. undici deps updated too (6.24.1, 7.24.4 on some lines).

It’s a laundry list of “oops.” But Node’s team moves fast — shoutout to the reporters and fixers. mcollina’s a machine.

Still, this screams: Update yesterday. LTS or not, these hit everywhere. Servers, CLI tools, your weekend hack.

What if you’re on 18.x or older? Pray. Or upgrade. Node’s LTS policy ain’t forever.

Why Does This Matter for Your Node.js App?

Production HTTP/2? Leaky. Permissions? Phony. TLS? Fragile.

That V8 hash DoS? JSON.parse() everywhere. APIs, configs, user input — all vectors.

Unique angle: This batch exposes Node’s growing pains. As it chases Deno/Bun with permissions and tighter security, cracks show. Remember npm audit hell? This is runtime edition. Bold call — if Permission Model doesn’t mature by 26.x, devs bolt to Rust runtimes. History says so: Java applets died on security sins.

Patch notes dry? Sure. But subtext screams urgency. No CVEs assigned yet — but they will be.

Run node –version. Update via npm or site. Test your deps. undici users, double-check.

Ignore at peril. Internet doesn’t forget.


🧬 Related Insights

Frequently Asked Questions

What Node.js versions need these security updates?

20.x, 22.x, 24.x, 25.x — all major lines. Grab the latest in each.

Are these Node.js vulnerabilities exploitable in production?

Yes. DoS crashes, side-channels, permission bypasses. Remote HTTP/TLS triggers common.

Should I enable Node.js Permission Model now?

Not yet. Experimental, freshly bugged. Wait for stability unless you sandbox test.

How to update Node.js security releases?

Use NVM, n, or official binaries. npm install -g node@latest for active lines.

James Kowalski
Written by

Investigative tech reporter focused on AI ethics, regulation, and societal impact.

Frequently asked questions

What Node.js versions need these security updates?
20.x, 22.x, 24.x, 25.x — all major lines. Grab the latest in each.
Are these Node.js vulnerabilities exploitable in production?
Yes. DoS crashes, side-channels, permission bypasses. Remote HTTP/TLS triggers common.
Should I enable Node.js Permission Model now?
Not yet. Experimental, freshly bugged. Wait for stability unless you sandbox test.
How to update Node.js security releases?
Use NVM, n, or official binaries. npm install -g node@latest for active lines.

Worth sharing?

Get the best AI stories of the week in your inbox — no noise, no spam.

Originally reported by Node.js Blog

Stay in the loop

The week's most important stories from theAIcatchup, delivered once a week.