Safeguard
Vulnerability Analysis•

CVE-2026-23527: HTTP Request Smuggling in h3 Before 1.15.5

CVE-2026-23527 is an HTTP request smuggling flaw (8.9) in h3 before 1.15.5, caused by a case sensitive Transfer-Encoding check. Upgrade to 1.15.5 or later.

Safeguard Security Team
3 min read

CVE-2026-23527 is a high severity request smuggling flaw (CVSS 8.9) in h3, the minimal HTTP framework for JavaScript. Its readRawBody function checked the Transfer-Encoding header for "chunked" case sensitively, although the header is case insensitive. Versions up to 1.15.4 are affected, and h3 1.15.5 fixes it.

What's affected

The GitHub advisory lists h3 up to and including 1.15.4 as affected, in the v1 line, and 1.15.5 as the patched version.

h3 powers other tools. The advisory notes that h3 is often used in containerized setups behind TCP load balancers, and mentions Nuxt and Nitro. You may therefore run it as a transitive dependency without having chosen it.

The advisory says the risk grows when the app runs behind a layer 4 proxy or anything that does not normalize headers.

How to check if you're exposed

Find every copy of h3 in your project and its version:

npm ls h3
pnpm why h3
yarn why h3

Check for several versions, since monorepos often hold more than one. Then look at your deployment. If the app sits behind a TCP level load balancer or a proxy that passes header values through untouched, the smuggling condition is easier to meet.

What to do now

  1. Upgrade h3 to 1.15.5 or later, directly or through the framework that depends on it.
  2. If h3 is transitive, update the parent package or add a resolution or override for h3.
  3. Run npm ls h3 again to confirm there is no old copy left.
  4. Make sure your proxy or load balancer normalizes and validates Transfer-Encoding and Content-Length headers.
  5. Rebuild and redeploy images so the fixed code ships.

Why it matters

The weakness is CWE-444 (HTTP Request Smuggling). HTTP header names and many of their values are case insensitive, but the h3 code compared the value with one exact spelling. A request with a different capitalization looked like it had no body, so the server processed it at once and left the rest of the data on the connection, where it can be read as the start of the next request.

Request smuggling relies on two systems disagreeing. Here the proxy and h3 can disagree about where a request ends. The advisory says an attacker could use this to get past WAF checks or desynchronize connections. The fix is to normalize the value before the comparison. The record does not mark this CVE as exploited in the wild.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Is h3 v2 affected?

The advisory is titled for h3 v1 and lists versions up to 1.15.4, so check the advisory for your line.

Why does the proxy matter?

The attack depends on the proxy and h3 reading the request differently, which is more likely when the proxy does not normalize headers.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.