{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-126357", "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "state": "PUBLISHED", "assignerShortName": "GitHub_M", "dateReserved": "2026-11-10T21:12:01.227Z", "datePublished": "2026-11-12T22:18:46.437Z", "dateUpdated": "2026-11-12T22:18:46.437Z" }, "containers": { "cna": { "title": "Hono: `mount()` and `app.mount()` can forward a path that bypasses middleware scoped inside the mount prefix", "problemTypes": [ { "descriptions": [ { "cweId": "CWE-288", "lang": "en", "description": "CWE-288: Authentication Bypass Using an Alternate Path or Channel", "type": "CWE" } ] } ], "metrics": [ { "cvssV3_1": { "attackComplexity": "LOW", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 5.3, "baseSeverity": "MEDIUM", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "privilegesRequired": "NONE", "scope": "UNCHANGED", "userInteraction": "NONE", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N", "version": "3.1" } } ], "references": [ { "name": "https://github.com/honojs/hono/security/advisories/GHSA-4m76-xfj5-7975", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/honojs/hono/security/advisories/GHSA-4m76-xfj5-7975" }, { "name": "https://github.com/honojs/hono/commit/34f90432a1794b28e52802670efcd01963f716d6", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/honojs/hono/commit/34f90432a1794b28e52802670efcd01963f716d6" }, { "name": "https://github.com/honojs/hono/releases/tag/v4.13.16", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/honojs/hono/releases/tag/v4.13.16" } ], "affected": [ { "vendor": "honojs", "product": "hono", "versions": [ { "version": "< 4.13.16", "status": "affected" } ] } ], "providerMetadata": { "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M", "dateUpdated": "2026-11-12T22:18:46.437Z" }, "descriptions": [ { "lang": "en", "value": "Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.13.16, mount() and app.mount() can remove a dynamic mount prefix using the route-pattern length rather than the matched-prefix length, allowing a crafted path to be forwarded as a protected inner route while the outer application routes the original path. Since 4.12.21, rebuilding the forwarded URL from the decoded pathname can also convert a decoded backslash to a slash and collapse parent-directory segments, again causing the mounted application to receive a protected path. An unauthenticated client can use either applicable path transformation to reach a mounted route without authentication or authorization middleware scoped to a subpath inside the mount prefix. This issue is fixed in version 4.13.16." } ], "source": { "advisory": "GHSA-4m76-xfj5-7975", "discovery": "UNKNOWN" } } } }