@fastify/express vulnerable to path-scoped middleware bypass via absolute-form request targets
@fastify/express is a Fastify plugin that runs Express middleware inside Fastify. In versions 4.0.5 through 4.0.8, when Fastify runs with the non-default ignoreDuplicateSlashes option enabled, the plugin matches path-scoped Express middleware against a URL whose duplicate-slash normalization has also collapsed the separator after an absolute-form request target's scheme, so Fastify's router resolves the request to the scoped path and runs the handler while the Express layer no longer sees that path. As a result, a request using an absolute-form target can reach a handler on a scoped route such as an admin path while the middleware for authentication, authorization, or rate limiting is skipped. An unauthenticated attacker needs only the non-default ignoreDuplicateSlashes option to be enabled. The issue is fixed in @fastify/express 4.0.9, and users should upgrade to 4.0.9 or later. As a workaround, enforce authentication in a Fastify hook such as preHandler that runs after the router resolves the request, or leave ignoreDuplicateSlashes at its default.
- Products
- @fastify/express
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-112362
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 13:45 UTC · Revision 1
Source evidence
@fastify/express vulnerable to path-scoped middleware bypass via absolute-form request targets
core-cve · Original sourcePublished 27 Oct 2026, 11:27 UTC
@fastify/express is a Fastify plugin that runs Express middleware inside Fastify. In versions 4.0.5 through 4.0.8, when Fastify runs with the non-default ignoreDuplicateSlashes option enabled, the plugin matches path-scoped Express middleware against a URL whose duplicate-slash normalization has also collapsed the separator after an absolute-form request target's scheme, so Fastify's router resolves the request to the scoped path and runs the handler while the Express layer no longer sees that path. As a result, a request using an absolute-form target can reach a handler on a scoped route such as an admin path while the middleware for authentication, authorization, or rate limiting is skipped. An unauthenticated attacker needs only the non-default ignoreDuplicateSlashes option to be enabled. The issue is fixed in @fastify/express 4.0.9, and users should upgrade to 4.0.9 or later. As a workaround, enforce authentication in a Fastify hook such as preHandler that runs after the router resolves the request, or leave ignoreDuplicateSlashes at its default.
cve:CVE-2026-112362
@fastify/express
Fixed versions: Not specified
Complete source record
{
"id": "af5eb731910f8a8ab5f2d75c151c94bc0cbc499d0007260cefbdb4341aceb742",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-112362",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "@fastify/express vulnerable to path-scoped middleware bypass via absolute-form request targets",
"summary": "@fastify/express is a Fastify plugin that runs Express middleware inside Fastify. In versions 4.0.5 through 4.0.8, when Fastify runs with the non-default ignoreDuplicateSlashes option enabled, the plugin matches path-scoped Express middleware against a URL whose duplicate-slash normalization has also collapsed the separator after an absolute-form request target's scheme, so Fastify's router resolves the request to the scoped path and runs the handler while the Express layer no longer sees that path. As a result, a request using an absolute-form target can reach a handler on a scoped route such as an admin path while the middleware for authentication, authorization, or rate limiting is skipped. An unauthenticated attacker needs only the non-default ignoreDuplicateSlashes option to be enabled. The issue is fixed in @fastify/express 4.0.9, and users should upgrade to 4.0.9 or later. As a workaround, enforce authentication in a Fastify hook such as preHandler that runs after the router resolves the request, or leave ignoreDuplicateSlashes at its default.",
"evidence": "cve:CVE-2026-112362",
"products": [
{
"name": {
"value": "@fastify/express",
"evidence": "/containers/cna/affected/0/product"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": []
}
],
"severity": "critical",
"structured": {
"id": "CVE-2026-112362",
"aliases": [
"CVE-2026-112362"
],
"metrics": [
{
"format": "CVSS",
"cvssV3_1": {
"version": "3.1",
"baseScore": 9.1,
"baseSeverity": "CRITICAL",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N"
},
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"affected": [
{
"vendor": "@fastify/express",
"product": "@fastify/express",
"versions": [
{
"status": "affected",
"version": "4.0.5",
"lessThan": "4.0.9",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "4.0.9",
"versionType": "semver"
}
],
"packageURL": "pkg:npm/@fastify/express",
"defaultStatus": "unaffected"
}
],
"modified": "2026-10-27T11:27:59.364Z",
"provider": "cve",
"references": [
"https://github.com/fastify/fastify-express/security/advisories/GHSA-6h42-57hq-9746",
"https://cna.openjsf.org/security-advisories.html"
],
"provider_metadata": {
"cna": {
"orgId": "ce714d77-add3-4f53-aff5-83d477b104bb",
"shortName": "openjs",
"dateUpdated": "2026-10-27T11:27:59.364Z"
}
}
},
"related_cves": [
{
"value": "CVE-2026-112362",
"evidence": "/cveMetadata/cveId"
}
],
"security_relevant": true,
"severity_evidence": "/containers/cna/metrics"
},
"source_id": "core-cve",
"document_id": 391940,
"published_at": "2026-10-27T11:27:59.364+00:00"
}