CVE-2026-33131: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-33131 is a Host header spoofing vulnerability in the H3 Node.js HTTP framework that enables middleware bypass, allowing unauthenticated attackers to access protected routes. It affects H3 versions >= 2.0.0-0 through < 2.0.1-rc.15 for Node.js, including downstream frameworks such as Nitro and Nuxt that rely on H3 for HTTP handling. The vulnerability was published on March 17, 2026, and patched on March 20, 2026. The GitHub Advisory Database assigns a CVSS v3.1 score of 7.4 (High) with Attack Complexity: High, while Feedly's threat intelligence estimates a score of 9.1 (Critical) (GitHub Advisory, Red Hat Bugzilla).

Technical details

The root cause is classified as CWE-290 (Authentication Bypass by Spoofing). The vulnerability exists in H3's NodeRequestUrl class, which extends FastURL. When middleware accesses event.url, event.url.hostname, or event.url._url, it triggers the _url getter in FastURL, which constructs a NativeURL object from an href property built using unsanitized, attacker-controlled input — specifically the HTTP Host header. Because H3's router resolves the route handler before running middleware, an attacker can supply a crafted Host header (e.g., Host: localhost:3000/abchehe?) to cause the middleware path check to evaluate against the spoofed URL while the route handler still matches the actual request path, effectively bypassing any path-based authentication or authorization middleware (GitHub Advisory, Red Hat Bugzilla).

Impact

Successful exploitation allows an unauthenticated remote attacker to bypass middleware-enforced authentication or authorization controls, gaining access to protected routes and their underlying functionality. The confidentiality and integrity impacts are rated High, as an attacker could read sensitive data or perform unauthorized actions on protected endpoints. Availability is not directly impacted. Applications built on H3 that use path-based middleware guards — including those using Nitro or Nuxt — are affected, potentially exposing internal APIs, admin endpoints, or other sensitive resources (GitHub Advisory, Red Hat Bugzilla).

Exploitability

A public proof-of-concept (PoC) exploit is available in the GitHub Security Advisory, consisting of a simple Python script that crafts a malicious Host header to trigger the bypass. The EPSS score is approximately 0.034% (11th percentile), indicating a currently low probability of widespread exploitation within 30 days. There is no evidence of in-the-wild exploitation or threat actor attribution at this time, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog (GitHub Advisory).

Exploitation steps

  1. Reconnaissance: Identify internet-facing Node.js applications using H3 versions >= 2.0.0-0 and < 2.0.1-rc.15, including applications built on Nitro or Nuxt. Look for endpoints that appear to be protected by middleware (e.g., /internal/, /admin/).
  2. Identify a triggering condition: Confirm the target application accesses event.url, event.url.hostname, or similar URL properties in middleware (e.g., a logging middleware), which triggers the vulnerable _url getter in FastURL.
  3. Craft a malicious Host header: Construct an HTTP request to the protected endpoint with a spoofed Host header that includes a path suffix and query separator, e.g., Host: localhost:3000/abchehe?. This causes the middleware path check to evaluate against a URL that does not match the protected route pattern.
  4. Send the request: Issue the crafted HTTP GET request to the target protected endpoint (e.g., /internal/run). The route handler resolves correctly to the protected route, but the middleware path check fails against the spoofed URL, bypassing the authentication/authorization middleware.
  5. Access protected resource: Receive the response from the protected route handler (e.g., Internal OK), confirming successful middleware bypass and unauthorized access (GitHub Advisory).
import requests
url = "http://localhost:3000"
headers = {
    "Host": f"localhost:3000/abchehe?"
}
res = requests.get(f"{url}/internal/run", headers=headers)
print(res.text)

Indicators of compromise

  • Network: Inbound HTTP requests to protected routes (e.g., /internal/, /admin/) with anomalous Host header values containing path segments or query characters (e.g., Host: hostname:port/somepath?).
  • Logs: Web server or application access logs showing requests where the Host header value contains / or ? characters, particularly paired with requests to sensitive or restricted endpoints returning successful (2xx) responses.
  • Application Behavior: Unexpected successful responses from routes that should be blocked by middleware (e.g., internal API endpoints returning data without a valid authentication token being present in the request).

Mitigation and workarounds

Upgrade H3 to version 2.0.1-rc.15 or later, which contains a patch for this issue (GitHub Advisory, Red Hat Bugzilla). As a workaround for applications that cannot immediately upgrade, avoid accessing event.url, event.url.hostname, or event.url._url directly in middleware; instead, use only sanitized string representations of the URL. Additionally, implement server-level or reverse-proxy validation of the Host header to reject requests with malformed or unexpected values before they reach the application.

Community reactions

The vulnerability was reported by researcher hibwyli and published by H3 maintainer pi0 on March 17, 2026. Red Hat tracked the issue via Bugzilla (Bug 2449584) and classified it as high severity. Social media posts on Bluesky noted the disclosure shortly after publication. No major media coverage or significant community controversy has been identified beyond standard vulnerability tracking (GitHub Advisory, Red Hat Bugzilla).

Additional resources


Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-966w-4vpf-p7hcHIGH7.1
  • JavaScript logoJavaScript
  • @aloma.io/aloma
NoYesOct 25, 2026
GHSA-mrwp-f3q8-3g9pMEDIUM5.9
  • JavaScript logoJavaScript
  • follow-redirects
NoYesOct 25, 2026
GHSA-hfm3-x63j-7fxpHIGHN/A
  • JavaScript logoJavaScript
  • @payload-auth-link/migrate
NoYesOct 25, 2026
GHSA-6244-vvv9-76f5MEDIUMN/A
  • JavaScript logoJavaScript
  • @payload-auth-link/plugin
NoYesOct 25, 2026
GHSA-q53q-qg98-p9jfHIGHN/A
  • JavaScript logoJavaScript
  • llm-fw
NoYesOct 25, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management