CVE-2026-76169
fastify vulnerable to authentication bypass via malformed URLs reaching encapsulated not-found handlers
fastify versions >= 4.0.0 and before 5.12.2 can route a malformed URL sent under one plugin prefix to the custom not-found handler of a different sibling plugin, and invoke it without the preHandler hook declared for that handler. The internal not-found router for encapsulated handlers dispatches malformed paths through a single shared handler pointer before URL decoding, ignoring the prefix and skipping the selected handler's normal lifecycle. An unauthenticated attacker can therefore reach an authentication-protected private fallback through an unrelated public prefix and read its full response, bypassing the authentication hook and breaking prefix encapsulation. Users should upgrade to fastify 5.12.2 or later.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
7.5
fastify vulnerable to authentication bypass via malformed URLs reaching encapsulated not-found handlers
fastify versions >= 4.0.0 and before 5.12.2 can route a malformed URL sent under one plugin prefix to the custom not-found handler of a different sibling plugin, and invoke it without the preHandler hook declared for that handler. The internal not-found router for encapsulated handlers dispatches malformed paths through a single shared handler pointer before URL decoding, ignoring the prefix and skipping the selected handler's normal lifecycle. An unauthenticated attacker can therefore reach an authentication-protected private fallback through an unrelated public prefix and read its full response, bypassing the authentication hook and breaking prefix encapsulation. Users should upgrade to fastify 5.12.2 or later.
- Record
CVE-2026-76169- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-288
- Updated
- 2026-11-02
EUVDEUVD-2026-70988
7.5
fastify versions >= 4.0.0 and before 5.12.2 can route a malformed URL sent under one plugin prefix to the custom not-found handler of a different sibling plugin, and invoke it without the preHandler hook declared for that handler. The internal not-found router for encapsulated handlers dispatches malformed paths through a single shared handler pointer before URL decoding, ignoring the prefix and skipping the selected handler's normal lifecycle. An unauthenticated attacker can therefore reach an authentication-protected private fallback through an unrelated public prefix and read its full response, bypassing the authentication hook and breaking prefix encapsulation. Users should upgrade to fastify 5.12.2 or later.
- Record
EUVD-2026-70988- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-p68q-wchp-6fh7
7.5
fastify vulnerable to authentication bypass via malformed URLs reaching encapsulated not-found handlers
Impact
Fastify routes a malformed URL under one plugin prefix to the custom not-found handler of a different sibling plugin, invoking the handler registered last and skipping the preHandler declared in its setNotFoundHandler(). When the request method has no route in the main router, a malformed request target reaches Fastify's internal not-found router before URL decoding and is dispatched through a single shared handler pointer, regardless of prefix and without the normal request lifecycle. An unauthenticated request to a public prefix can therefore reach an authentication-protected not-found handler registered under a different prefix and receive its full response, breaking prefix encapsulation and bypassing the authentication hook. Applications whose private or tenant fallbacks return protected data from a not-found handler are affected.
Patches
Patched in fastify 5.12.2. Malformed URLs are now routed through the configured onBadUrl and onMaxParamLength handlers so they fail closed before any application not-found handler runs, and the shared not-found handler pointer has been removed.
Workarounds
Reject malformed request targets before they reach the application, for example at an upstream proxy or gateway, and do not rely on a not-found handler to serve protected data. A global onRequest authentication hook does not mitigate this, because the malformed-URL path skips it.
- Record
GHSA-p68q-wchp-6fh7- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-288
- Updated
- 2026-11-02
NVD
7.5
fastify versions >= 4.0.0 and before 5.12.2 can route a malformed URL sent under one plugin prefix to the custom not-found handler of a different sibling plugin, and invoke it without the preHandler hook declared for that handler. The internal not-found router for encapsulated handlers dispatches malformed paths through a single shared handler pointer before URL decoding, ignoring the prefix and skipping the selected handler's normal lifecycle. An unauthenticated attacker can therefore reach an authentication-protected private fallback through an unrelated public prefix and read its full response, bypassing the authentication hook and breaking prefix encapsulation. Users should upgrade to fastify 5.12.2 or later.
- Record
CVE-2026-76169- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-288
- Updated
- 2026-11-02
OSV
7.5
fastify vulnerable to authentication bypass via malformed URLs reaching encapsulated not-found handlers
fastify versions >= 4.0.0 and before 5.12.2 can route a malformed URL sent under one plugin prefix to the custom not-found handler of a different sibling plugin, and invoke it without the preHandler hook declared for that handler. The internal not-found router for encapsulated handlers dispatches malformed paths through a single shared handler pointer before URL decoding, ignoring the prefix and skipping the selected handler's normal lifecycle. An unauthenticated attacker can therefore reach an authentication-protected private fallback through an unrelated public prefix and read its full response, bypassing the authentication hook and breaking prefix encapsulation. Users should upgrade to fastify 5.12.2 or later.
- Record
CVE-2026-76169- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-288
- Updated
- 2026-11-02
OSVGHSA-p68q-wchp-6fh7
7.5
fastify vulnerable to authentication bypass via malformed URLs reaching encapsulated not-found handlers
Impact
Fastify routes a malformed URL under one plugin prefix to the custom not-found handler of a different sibling plugin, invoking the handler registered last and skipping the preHandler declared in its setNotFoundHandler(). When the request method has no route in the main router, a malformed request target reaches Fastify's internal not-found router before URL decoding and is dispatched through a single shared handler pointer, regardless of prefix and without the normal request lifecycle. An unauthenticated request to a public prefix can therefore reach an authentication-protected not-found handler registered under a different prefix and receive its full response, breaking prefix encapsulation and bypassing the authentication hook. Applications whose private or tenant fallbacks return protected data from a not-found handler are affected.
Patches
Patched in fastify 5.12.2. Malformed URLs are now routed through the configured onBadUrl and onMaxParamLength handlers so they fail closed before any application not-found handler runs, and the shared not-found handler pointer has been removed.
Workarounds
Reject malformed request targets before they reach the application, for example at an upstream proxy or gateway, and do not rely on a not-found handler to serve protected data. A global onRequest authentication hook does not mitigate this, because the malformed-URL path skips it.
- Record
GHSA-p68q-wchp-6fh7- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-288
- Updated
- 2026-11-02
Show 7 moreShow less
OSVCLSA-2026-1790854816 No score
TuxCare security update for fastify (2 CVEs)
TuxCare rebuilt fastify to address 2 CVEs. Fixed in 5.12.1-tuxcare.1.
- Record
CLSA-2026-1790854816- Updated
- 2026-11-02
OSVCLSA-2026-1790857029 No score
TuxCare security update for fastify (2 CVEs)
TuxCare rebuilt fastify to address 2 CVEs. Fixed in 5.12.0-tuxcare.2.
- Record
CLSA-2026-1790857029- Updated
- 2026-11-02
OSVCLSA-2026-1790863084 No score
TuxCare security update for fastify (1 CVE)
TuxCare rebuilt fastify to address 1 CVE. Fixed in 5.11.3-tuxcare.4.
- Record
CLSA-2026-1790863084- Updated
- 2026-11-02
OSVCLSA-2026-1790871227 No score
TuxCare security update for fastify (2 CVEs)
TuxCare rebuilt fastify to address 2 CVEs. Fixed in 5.7.4-tuxcare.3.
- Record
CLSA-2026-1790871227- Updated
- 2026-11-02
OSVCLSA-2026-1790889495 No score
TuxCare security update for fastify (1 CVE)
TuxCare rebuilt fastify to address 1 CVE. Fixed in 5.2.1-tuxcare.3.
- Record
CLSA-2026-1790889495- Updated
- 2026-11-02
OSVCLSA-2026-1792233089 No score
TuxCare security update for fastify (2 CVEs)
TuxCare rebuilt fastify to address 2 CVEs. Fixed in 4.29.1-tuxcare.7.
- Record
CLSA-2026-1792233089- Updated
- 2026-11-02
OSVCLSA-2026-1794060794 No score
TuxCare security update for fastify (6 CVEs)
TuxCare rebuilt fastify to address 6 CVEs. Fixed in 4.28.1-tuxcare.1.
- Record
CLSA-2026-1794060794- Updated
- 2026-11-07
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
fastifynpm |
4.0.0 up to 5.12.2 | 5.12.2 |
fastifyTuxCare:npm From an advisory covering 2 CVEs |
5.12.1-tuxcare.0 up to 5.12.1-tuxcare.1, plus listed versions 5.12.1 |
5.12.1-tuxcare.1 |
fastifyTuxCare:npm From an advisory covering 2 CVEs |
5.12.0-tuxcare.0 up to 5.12.0-tuxcare.2, plus listed versions 5.12.05.12.0-tuxcare.1 |
5.12.0-tuxcare.2 |
fastifyTuxCare:npm |
5.11.3-tuxcare.0 up to 5.11.3-tuxcare.4, plus listed versions 5.11.35.11.3-tuxcare.15.11.3-tuxcare.25.11.3-tuxcare.3 |
5.11.3-tuxcare.4 |
fastifyTuxCare:npm |
5.7.4-tuxcare.0 up to 5.7.4-tuxcare.3, plus listed versions 5.7.45.7.4-tuxcare.15.7.4-tuxcare.2 |
5.7.4-tuxcare.3 |
fastifyTuxCare:npm |
5.2.1-tuxcare.0 up to 5.2.1-tuxcare.3, plus listed versions 5.2.15.2.1-tuxcare.15.2.1-tuxcare.2 |
5.2.1-tuxcare.3 |
fastifyTuxCare:npm From an advisory covering 2 CVEs |
4.29.1-tuxcare.0 up to 4.29.1-tuxcare.7, plus listed versions 4.29.14.29.1-tuxcare.14.29.1-tuxcare.24.29.1-tuxcare.34.29.1-tuxcare.44.29.1-tuxcare.54.29.1-tuxcare.6 |
4.29.1-tuxcare.7 |
fastifyTuxCare:npm From an advisory covering 6 CVEs |
4.28.1-tuxcare.0 up to 4.28.1-tuxcare.1, plus listed versions 4.28.1 |
4.28.1-tuxcare.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases | OSV | |
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-76169 is a high vulnerability (CVSS 7.5) in @clerk Fastify, published September 4, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.53%, the 45th percentile. Fixed in fastify 5.12.2.
References
github.com/fastify/fastify/security/advisories/GHSA-p68q-wchp-6fh7
cna.openjsf.org/security-advisories.html
nvd.nist.gov/vuln/detail/CVE-2026-76169
github.com/fastify/fastify/commit/93c239a380f3f2778bb7565fcdf777e91cfe1fbc
github.com/fastify/fastify/releases/tag/v5.12.2
github.com/advisories/GHSA-p68q-wchp-6fh7
github.com/CVEProject/cvelistV5/tree/main/cves/2026/76xxx/CVE-2026-76169.json
github.com/fastify/fastify