{"id":"CVE-2026-6414","published":"2026-04-16T13:09:03Z","modified":"2026-04-16T13:48:52Z","title":"@fastify/static vulnerable to route guard bypass via encoded path separators","vendor":"@fastify/static","product":"@fastify/static","tier":"tail","description":{"text":"@fastify/static versions 8.0.0 through 9.1.0 decode percent-encoded path separators (%2F) before filesystem resolution, while Fastify's router treats them as literal characters. This mismatch allows attackers to bypass route-based middleware or guards that protect files served by @fastify/static. For example, a route guard on a protected path can be circumvented by encoding the path separator in the URL. Upgrade to @fastify/static 9.1.1 to fix this issue. There are no workarounds.","provenance":"source","from":"CVE.org"},"cvss":{"score":5.9,"severity":"MEDIUM","version":"3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","provenance":"source","from":"CVE.org CNA"},"epss":{"score":0.00422,"percentile":0.36527,"provenance":"source"},"cwes":[{"id":"CWE-177","name":"Improper Handling of URL Encoding (Hex Encoding)"}],"references":[{"url":"https://github.com/fastify/middie/security/advisories/GHSA-cxrg-g7r8-w69p","tags":[]},{"url":"https://github.com/honojs/hono/security/advisories/GHSA-q5qw-h33p-qvwr","tags":[]},{"url":"https://github.com/fastify/fastify-static/security/advisories/GHSA-x428-ghpx-8j92","tags":[]},{"url":"https://cna.openjsf.org/security-advisories.html","tags":[]}],"priority":{"score":11.4,"factors":[{"name":"EPSS percentile","points":7.31},{"name":"CVSS severity","points":4.13}]},"vendorSlug":"fastify-static","affectedVersions":[{"vendor":"@fastify/static","product":"@fastify/static","versions":[">= 8.0.0, < 9.1.1"]}],"affected":[{"ecosystem":"npm","package":"@fastify/static","vulnerableRanges":[">=8.0.0, <9.1.1"],"patched":["9.1.1"],"from":["GHSA-x428-ghpx-8j92"],"provenance":"source"}],"euvd":{"id":"EUVD-2026-23227","exploited":false,"provenance":"source"},"lineage":{"familyId":"fam-fastify-static-cve-2021-22964","parents":[{"from":"CVE-2026-22031","to":"CVE-2026-6414","relation":"related","confidence":"high","kind":"lineage","evidence":[{"kind":"osv-related","provenance":"source","id":"GHSA-cxrg-g7r8-w69p","via":"related"},{"kind":"osv-related","provenance":"source","id":"GHSA-x428-ghpx-8j92","via":"reference","url":"https://github.com/fastify/middie/security/advisories/GHSA-cxrg-g7r8-w69p"}]},{"from":"CVE-2026-29045","to":"CVE-2026-6414","relation":"related","confidence":"high","kind":"lineage","evidence":[{"kind":"osv-related","provenance":"source","id":"GHSA-q5qw-h33p-qvwr","via":"related"},{"kind":"osv-related","provenance":"source","id":"GHSA-x428-ghpx-8j92","via":"reference","url":"https://github.com/honojs/hono/security/advisories/GHSA-q5qw-h33p-qvwr"}]}],"children":[{"from":"CVE-2026-6414","to":"CVE-2026-15074","relation":"incomplete-fix","confidence":"high","kind":"lineage","evidence":[{"kind":"text","provenance":"source","relation":"incomplete-fix","quote":"This is a bypass of the earlier fix for CVE-2026-6414, which only covered encoded forward slashes.","from":"CVE.org","in":"CVE-2026-15074"}]}]}}