June 19, 2026 · 4 min read · Kilat Labs

Node.js ships 12 CVE fixes: what to patch first

Node.js shipped twelve CVE fixes across 26.x, 24.x and 22.x on June 18, two of them high severity; here is what a headless commerce team should patch first.

Node.js shipped a security release on June 18, 2026 that fixes twelve CVEs at once, two of them rated high severity, across every maintained line. For a studio whose headless storefronts, automation jobs and mobile tooling all run on Node, this is not a routine patch bump. Several of the fixes sit on boundaries a commerce platform actually trusts: TLS verification, the permission model and HTTP/2 handling. Here is how to read the list and what to patch first.

What changed

Node.js released v26.3.1, v24.17.0 and v22.23.0 on June 18, 2026 to fix twelve CVEs spanning the Current line and both active LTS lines. The June 2026 security advisory covers everything from a denial of service in WebCrypto to three separate bypasses of the permission model. Alongside the code fixes the 26.3.1 release ships updated dependencies, with OpenSSL moved to 3.5.7, llhttp to 9.4.2 and undici to 8.5.0, which means the fetch and TLS layers get patched underneath your application code whether or not you touch it. The honest read is that the count is not the story. Two flaws are high severity, a cluster of medium ones target TLS and certificate handling, and the rest are lower-risk hardening. The triage is what matters.

The two high-severity flaws, and why they differ

The two high-severity CVEs are a WebCrypto denial of service and a TLS wildcard authentication bypass, and they put different parts of a stack at risk. CVE-2026-48933 is an integer overflow in WebCrypto AES that an attacker can use to crash a process, an availability problem for any Node service doing crypto on attacker-influenced input. CVE-2026-48618 is the one that should worry a commerce team more. A Unicode dot separator can slip through wildcard certificate matching, so a hostname that should fail verification can be accepted instead. On a stack where a backend-for-frontend talks to payment, search and ERP services over TLS, a certificate check that can be tricked is a trust boundary you assumed was solid quietly going soft.

The quieter bypasses that matter more for commerce

The medium-rated TLS and permission bypasses arguably matter more for a headless build than the headline denial of service. Three of them sit directly on the connection between services. CVE-2026-48928 lets uppercase characters in a server name defeat the context matching that mutual TLS relies on. CVE-2026-48934 reuses a TLS session to skip host verification. CVE-2026-48930 uses an embedded null byte in a hostname to rebind which authority a request trusts. If your automation layer connects to a 3PL, a PIM or a payment gateway over mutual TLS, these are the CVEs to read closely, because they weaken exactly the identity guarantees those integrations depend on. Then there are three bypasses of the Node permission model, through process report writing, through file handle timestamp changes, and on 26.x through a Unix domain socket that sidesteps network permissions. The lesson is not that the permission model is broken. It is that the model is defense in depth, not a wall. A team that leaned on it as the only boundary on a headless storefront just learned why it needs a second layer.

What we would change this quarter

Patch to the fixed versions now, then prioritise by where Node actually sits, not by how many CVEs there are. The internet-facing surfaces go first: any backend-for-frontend, edge function or storefront server on Node, because that is where the TLS and certificate bypasses are reachable. Automation workers that hold mutual-TLS connections to ERP, payment or logistics systems come next, for the same reason. React Native build tooling and local development machines run Node too, but Metro and a bundler on a laptop are a far lower priority than an internet-facing service, so do not let the long CVE list push you to rebuild a mobile pipeline before you have patched a live storefront. Pin the exact fixed version in your container images and lockfiles rather than floating on a range, so a fresh build does not silently fall back to a vulnerable release. And treat the permission-model bypasses as a prompt to check that something other than the Node flag stands between an untrusted request and the filesystem. The dependency bumps to OpenSSL and undici land automatically with the upgrade, so the single highest-value action this week is unglamorous: move every Node service to v26.3.1, v24.17.0 or v22.23.0 and verify it in production, not just in CI.

Where to dig deeper

Related reading

Want this done right on your store?

We engineer premium e-commerce end-to-end, Magento Hyvä, Shopify Plus, mobile and automation. A two-week store audit turns ideas like the one above into real numbers and a prioritised roadmap for your store.

Get new posts in your inbox

Two a month at most. Hyvä, automation, motion budgets and the boring parts of shipping. No filler, no spam.

We use your address only to send new posts. Unsubscribe any time.