{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-112712", "assignerOrgId": "ce714d77-add3-4f53-aff5-83d477b104bb", "state": "PUBLISHED", "assignerShortName": "openjs", "dateReserved": "2026-10-19T17:43:39.048Z", "datePublished": "2026-10-20T20:43:48.681Z", "dateUpdated": "2026-10-20T20:43:48.681Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "ce714d77-add3-4f53-aff5-83d477b104bb", "shortName": "openjs", "dateUpdated": "2026-10-20T20:43:48.681Z" }, "descriptions": [ { "lang": "en", "value": "@fastify/middie is the Express-style middleware engine for Fastify. In versions from 9.0.0 through 9.3.5, the use() function joined a path-scoped middleware's mount path to the plugin scope prefix in a way that could diverge from the path Fastify's router serves, most often when the scope prefix ended in a slash, and also for array mount paths and for mount paths written without a leading slash. When the two paths disagreed, the middleware was silently skipped while the route handler still ran, so path-scoped middleware such as authentication, authorization, or rate limiting could be bypassed by a single unauthenticated request. The issue is fixed in @fastify/middie 9.3.6, and users should upgrade to 9.3.6 or later. As a workaround, enforce authorization in a Fastify hook such as preHandler that runs after the router has resolved the request.", "supportingMedia": [ { "type": "text/html", "base64": false, "value": "@fastify/middie is the Express-style middleware engine for Fastify. In versions from 9.0.0 through 9.3.5, the use() function joined a path-scoped middleware's mount path to the plugin scope prefix in a way that could diverge from the path Fastify's router serves, most often when the scope prefix ended in a slash, and also for array mount paths and for mount paths written without a leading slash. When the two paths disagreed, the middleware was silently skipped while the route handler still ran, so path-scoped middleware such as authentication, authorization, or rate limiting could be bypassed by a single unauthenticated request. The issue is fixed in @fastify/middie 9.3.6, and users should upgrade to 9.3.6 or later. As a workaround, enforce authorization in a Fastify hook such as preHandler that runs after the router has resolved the request." } ] } ], "affected": [ { "vendor": "@fastify/middie", "product": "@fastify/middie", "defaultStatus": "unaffected", "versions": [ { "versionType": "semver", "status": "affected", "version": "9.0.0", "lessThan": "9.3.6" }, { "versionType": "semver", "status": "unaffected", "version": "9.3.6" } ], "packageURL": "pkg:npm/@fastify/middie" } ], "references": [ { "url": "https://github.com/fastify/middie/security/advisories/GHSA-5p92-8765-9fv8" }, { "url": "https://cna.openjsf.org/security-advisories.html" } ], "credits": [ { "lang": "en", "type": "reporter", "value": "zachariah-mithani" }, { "lang": "en", "type": "remediation developer", "value": "mcollina" }, { "lang": "en", "type": "remediation developer", "value": "UlisesGascon" } ], "title": "@fastify/middie vulnerable to path-scoped middleware bypass via scope prefix mismatch", "metrics": [ { "format": "CVSS", "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N", "baseScore": 9.1, "baseSeverity": "CRITICAL" }, "scenarios": [ { "lang": "en", "value": "GENERAL" } ] } ], "problemTypes": [ { "descriptions": [ { "cweId": "CWE-436", "lang": "en", "description": "CWE-436: Interpretation Conflict", "type": "CWE" } ] } ], "x_generator": { "engine": "cve-kit 1.0.0" } } } }