Read the docs
TI-2026-25886 Aliases CVE-2026-33490GHSA-2j6q-whv2-gh6w

h3: Missing Path Segment Boundary Check in `mount()` Causes Middleware Execution on Unrelated Prefix-Matching Routes

Priority MEDIUM 57CWE-706Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
—
Confidentiality · integrity · availability
None · Low · None
Fix status
Fixed

Attack profile from CVSS 3.1 · NVD. Fix status from CNA and GitHub.

Summary

H3 is a minimal H(TTP) framework. In versions 2.0.0-0 through 2.0.1-rc.16, the `mount()` method in h3 uses a simple `startsWith()` check to determine whether incoming requests fall under a mounted sub-application's path prefix. Because this check does not verify a path segment boundary (i.e., that the next character after the base is `/` or end-of-string), middleware registered on a mount like `/admin` will also execute for unrelated routes such as `/admin-public`, `/administrator`, or `/adminstuff`. This allows an attacker to trigger context-setting middleware on paths it was never intended to cover, potentially polluting request context with unintended privilege flags. Version 2.0.2-rc.17 contains a patch.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00248 16th percentileScored 2026-11-07
Public exploit Yes 1 exploit referenceTagged by NVD
Fix Fixed h3 (h3js): 2.0.1-rc.17h3 (npm): 2.0.1-rc.17

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
h3jsh32.0.1-alpha.0 to before 2.0.1-rc.172.0.1-rc.17Patch availableCNA
—h3 (npm)2.0.1-alpha.0 to before 2.0.1-rc.172.0.1-rc.17Patch availableGHSA-2j6q-whv2-gh6w
  • h3 Vendorh3js Affected 2.0.1-alpha.0 to before 2.0.1-rc.17 Fixed in 2.0.1-rc.17 Patch available CNA
  • h3 (npm) Vendor— Affected 2.0.1-alpha.0 to before 2.0.1-rc.17 Fixed in 2.0.1-rc.17 Patch available GHSA-2j6q-whv2-gh6w

CPE configurations NVD · 16

CPEVersionsRoleVendor
cpe:2.3:a:h3:h3:2.0.1:rc1:*:*:*:node.js:*:*2.0.1 rc1Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc10:*:*:*:node.js:*:*2.0.1 rc10Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc11:*:*:*:node.js:*:*2.0.1 rc11Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc12:*:*:*:node.js:*:*2.0.1 rc12Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc13:*:*:*:node.js:*:*2.0.1 rc13Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc14:*:*:*:node.js:*:*2.0.1 rc14Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc15:*:*:*:node.js:*:*2.0.1 rc15Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc16:*:*:*:node.js:*:*2.0.1 rc16Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc2:*:*:*:node.js:*:*2.0.1 rc2Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc3:*:*:*:node.js:*:*2.0.1 rc3Vulnerableh3js
  • cpe:2.3:a:h3:h3:2.0.1:rc1:*:*:*:node.js:*:* Versions 2.0.1 rc1 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc10:*:*:*:node.js:*:* Versions 2.0.1 rc10 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc11:*:*:*:node.js:*:* Versions 2.0.1 rc11 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc12:*:*:*:node.js:*:* Versions 2.0.1 rc12 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc13:*:*:*:node.js:*:* Versions 2.0.1 rc13 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc14:*:*:*:node.js:*:* Versions 2.0.1 rc14 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc15:*:*:*:node.js:*:* Versions 2.0.1 rc15 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc16:*:*:*:node.js:*:* Versions 2.0.1 rc16 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc2:*:*:*:node.js:*:* Versions 2.0.1 rc2 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc3:*:*:*:node.js:*:* Versions 2.0.1 rc3 Vulnerable ·h3js
Show 6 more CPE
CPEVersionsRoleVendor
cpe:2.3:a:h3:h3:2.0.1:rc4:*:*:*:node.js:*:*2.0.1 rc4Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc5:*:*:*:node.js:*:*2.0.1 rc5Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc6:*:*:*:node.js:*:*2.0.1 rc6Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc7:*:*:*:node.js:*:*2.0.1 rc7Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc8:*:*:*:node.js:*:*2.0.1 rc8Vulnerableh3js
cpe:2.3:a:h3:h3:2.0.1:rc9:*:*:*:node.js:*:*2.0.1 rc9Vulnerableh3js
  • cpe:2.3:a:h3:h3:2.0.1:rc4:*:*:*:node.js:*:* Versions 2.0.1 rc4 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc5:*:*:*:node.js:*:* Versions 2.0.1 rc5 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc6:*:*:*:node.js:*:* Versions 2.0.1 rc6 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc7:*:*:*:node.js:*:* Versions 2.0.1 rc7 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc8:*:*:*:node.js:*:* Versions 2.0.1 rc8 Vulnerable ·h3js
  • cpe:2.3:a:h3:h3:2.0.1:rc9:*:*:*:node.js:*:* Versions 2.0.1 rc9 Vulnerable ·h3js

Remediation

  • Fix · CNA h3 (h3js) Fixed in 2.0.1-rc.17
  • Fix · GHSA-2j6q-whv2-gh6w h3 (npm) Fixed in 2.0.1-rc.17 Advisory →

Vendor assessments

Red Hat

Red Hat rating: Moderate. Red Hat's page for this CVE →

Not affected: 2 products
  • Logging Subsystem for Red Hat OpenShift
  • Red Hat OpenShift Update Service

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-33490
  2. 2026-10-03 Alias added: GHSA-2j6q-whv2-gh6w

References

  • TI-2026-25559 h3 has a Server-Sent Events Injection via Unsanitized Newlines in Event Stream Fields CVSS 3.1CRITICAL 10.0
  • TI-2026-25562 h3 has a middleware bypass with one gadget CVSS 3.1CRITICAL 9.1
  • TI-2026-25560 h3 has an observable timing discrepancy in basic auth utils CVSS 3.1MEDIUM 5.9
  • TI-2026-18951 h3 v1 has Request Smuggling (TE.TE) issue CVSS 3.1CRITICAL 9.8

Sources