CVE-2026-33490

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

Published Mar 26, 2026 CVSS 3.1 · 3.7 Low EPSS < 1% KEV · Not listed
Description
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.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-2j6q-whv2-gh6w h3: Missing Path Segment Boundary Check in `mount()` Causes Middleware Execution on Unrelated Prefix-Matching Routes
History
Type Values Removed Values Added
First Time appeared H3
H3 h3
CPEs cpe:2.3:a:h3:h3:2.0.1:rc10:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc11:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc12:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc13:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc14:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc15:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc16:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc1:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc2:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc3:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc4:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc5:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc6:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc7:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc8:*:*:*:node.js:*:*
cpe:2.3:a:h3:h3:2.0.1:rc9:*:*:*:node.js:*:*
Vendors & Products H3
H3 h3
Type Values Removed Values Added
First Time appeared H3js
H3js h3
Vendors & Products H3js
H3js h3
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description 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.
Title h3: Missing Path Segment Boundary Check in `mount()` Causes Middleware Execution on Unrelated Prefix-Matching Routes
Weaknesses CWE-706
References
Metrics cvssV3_1

{'score': 3.7, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Mar 26, 2026, 6:23 PM
Reserved
Mar 20, 2026, 4:16 PM
Status
Analyzed
Published
Mar 26, 2026, 6:16 PM
Modified
Jun 17, 2026, 10:37 AM
Severity
Moderate
Public date
Mar 26, 2026, 5:19 PM