Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Remote and unauthenticated (AV:N/PR:N/UI:N) but AC:H because the non-default deprecated ignoreDuplicateSlashes config is required; bypass exposes protected read/write routes (C:H/I:H), no availability impact.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
6Blast Radius
ecosystem impact- 4 npm packages depend on @fastify/middie (3 direct, 1 indirect)
Ecosystem-wide dependent count for version 9.3.2.
DescriptionCVE.org
@fastify/middie versions 9.3.1 and earlier are vulnerable to middleware bypass when the deprecated Fastify ignoreDuplicateSlashes option is enabled. The middleware path matching logic does not account for duplicate slash normalization performed by Fastify's router, allowing requests with duplicate slashes to bypass middleware authentication and authorization checks. This only affects applications using the deprecated ignoreDuplicateSlashes option. Upgrade to @fastify/middie 9.3.2 to fix this issue. There are no workarounds other than disabling the ignoreDuplicateSlashes option.
AnalysisAI
Authentication and authorization bypass in @fastify/middie 9.3.1 and earlier lets remote unauthenticated attackers reach protected routes by sending URLs with duplicate leading slashes (e.g. //admin/secret) when the deprecated top-level Fastify ignoreDuplicateSlashes option is enabled. Because middie reads the option only from routerOptions while Fastify's router still honors the top-level form, a normalization gap allows middleware-enforced checks to be skipped. There is no public exploit identified at time of analysis and EPSS is negligible (0.04%), but SSVC rates technical impact as total, reflecting a full auth-check bypass on affected deployments.
Technical ContextAI
The affected component is @fastify/middie, the Connect/Express-style middleware engine for the Fastify Node.js web framework, distributed on npm. Fastify normalizes request paths (collapsing duplicate slashes) when ignoreDuplicateSlashes is set, so the router matches a canonical path, but middie performs its own independent path matching to decide which middleware (including auth/authz gates) to run. The root cause is CWE-436 (Interpretation Conflict): middie reads ignoreDuplicateSlashes only from routerOptions and ignores the still-functional deprecated top-level fastify({ ignoreDuplicateSlashes: true }) form, so the router and the middleware layer disagree on what path is being requested. A request to //admin/secret is normalized by the router to /admin/secret and served, while middie sees the un-normalized //admin/secret and fails to apply the middleware bound to /admin/secret. This is distinct from the earlier GHSA-8p85-9qpw-fwgw (CVE-2026-2880), patched in 9.2.0.
RemediationAI
Vendor-released patch: upgrade @fastify/middie to >= 9.3.2, which reads the deprecated top-level ignoreDuplicateSlashes option and closes the normalization gap; this is the primary and complete fix (advisory: https://github.com/fastify/middie/security/advisories/GHSA-v9ww-2j6r-98q6). If you cannot upgrade immediately, the vendor-endorsed workaround is to migrate configuration from the deprecated top-level form fastify({ ignoreDuplicateSlashes: true }) to fastify({ routerOptions: { ignoreDuplicateSlashes: true } }), which middie already honors correctly and which removes the disagreement; the trade-off is a small config change with equivalent routing behavior. Alternatively, disabling ignoreDuplicateSlashes entirely also eliminates the bypass, but the side effect is that requests with duplicate slashes will no longer be silently normalized and may 404, which can break clients that rely on that normalization. There is no additional mitigation beyond patching or reconfiguring the option.
More in Fastify Middie
View allPath-based access-control bypass in @fastify/middie (Fastify's Express-style middleware engine) versions 9.1.0 through 9
Authentication bypass in @fastify/middie 9.3.1 and earlier lets unauthenticated attackers reach protected routes because
Authentication and authorization bypass in @fastify/middie 9.1.0 through 9.3.2 lets remote unauthenticated attackers rea
Middleware path-matching bypass in @fastify/middie before version 9.1.0 allows authenticated attackers to access protect
Authentication and authorization bypass in @fastify/middie (Node.js middleware library for Fastify) allows remote unauth
Denial of service in @fastify/middie 9.1.0 through 9.3.2 lets remote unauthenticated attackers crash the Node.js process
Same weakness CWE-436 – Interpretation Conflict
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-23235
GHSA-v9ww-2j6r-98q6