Summary
@fastify/static vulnerable to Authorization Bypass via Non-Canonical URL Paths
Advisory details
Impact
@fastify/static evaluates the allowedPath callback before normalizing dot segments and duplicate slashes in the pathname used for file resolution. Non-canonical pathnames such as //file, /./file, or /public/../private/file bypass allowedPath filtering while resolving to the intended file on disk.
Applications that use allowedPath as a security boundary to restrict access to specific static files or path subtrees may unintentionally expose files that were intended to be denied.
Patches
Upgrade to @fastify/static >= 10.1.2.
Workarounds
None. Upgrade to the patched version.
References
- https://github.com/advisories/GHSA-8pvw-jcv7-9cmj
- https://github.com/fastify/fastify-static/security/advisories/GHSA-8pvw-jcv7-9cmj
- https://nvd.nist.gov/vuln/detail/CVE-2026-7120
- https://github.com/fastify/fastify-static/commit/878c72e920fabacf7e37739bf78057044717bf63
- https://cna.openjsf.org/security-advisories.html
- https://github.com/fastify/fastify-static/releases/tag/v10.1.2
Related vulnerabilities
All Supply chain →- HIGHCVE-2026-69246
Guzzle: Noncanonical host can bypass host-based checks
- MEDIUMCVE-2026-69245
Guzzle: Noncanonical cookie domain keeps subdomain scope
- CRITICALGHSA-7rqj-j65f-68wh#next-auth
Auth.js: Email normalizer validates the address before Unicode normalization, allowing a homoglyph @ bypass
- CRITICALGHSA-7rqj-j65f-68wh#@auth/core
Auth.js: Email normalizer validates the address before Unicode normalization, allowing a homoglyph @ bypass
- MEDIUMGHSA-89vp-jrxv-24w8
JupyterLab: PyPI extension blocklist package-name canonicalization bypass
- HIGHGHSA-7q9c-hpx7-9cwm
TypeSpec: Unauthenticated Remote Shutdown of Spector Mock Server via POST /.admin/stop