CVE-2026-90982: @fastify/static vulnerable to route guard bypass via path case-folding
@fastify/static is a Fastify plugin that serves static files from a configured root directory. In versions before 10.1.4, on a case-insensitive filesystem such as Windows or the default macOS volume, a route guard or allowedPath restriction can be bypassed by altering the letter case of a path segment. The route matcher is case-sensitive while the filesystem is not, so a request that changes the case of a protected segment does not match the guarded route and falls through to the static handler, yet the filesystem resolves it to the same protected file. As a result, an unauthenticated request can read a file that a route guard or allowedPath was configured to protect. The issue does not affect case-sensitive filesystems and is not a directory traversal, since nothing is served from outside the configured root. The issue is fixed in @fastify/static 10.1.4, which validates the requested path against its actual on-disk spelling and rejects case-aliased paths before authorization. As a workaround, serve static files from a case-sensitive filesystem, or ensure route guards and allowedPath rules account for every letter-case variant of the protected paths.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
@fastify/staticto a version that resolves this vulnerability.Fixed in 10.1.4 - Compensating control
As a workaround on case-insensitive filesystems (e.g., Windows or default macOS volume), serve static files from a case-sensitive filesystem OR ensure route guards and allowedPath rules account for every letter-case variant of the protected paths to prevent route guard bypass via path case-folding.
Event History
Frequently Asked Questions
Which deployments are exposed?
Deployments using @fastify/static before 10.1.4 on a case-insensitive filesystem are affected, including Windows and the default macOS volume. Case-sensitive filesystems are not affected.
What does an attacker need to exploit this issue?
An attacker can make an unauthenticated network request using altered letter case in a protected path segment. Exploitation relies on a route guard or allowedPath restriction protecting content served from the configured static root.
Can this expose files outside the configured static root?
No. This is not a directory traversal issue; it does not cause files outside the configured root directory to be served.
What can be done if upgrading is not immediately possible?
Serve static files from a case-sensitive filesystem, or make route guards and allowedPath rules cover every letter-case variation of protected paths. Upgrading to @fastify/static 10.1.4 applies validation against the actual on-disk path spelling before authorization.