# CVE-2026-18500: @fastify/jwt authorization bypass via global secret override

Source: https://junglewise.ai/threats/cve-2026-18500-fastify-jwt-authorization-bypass-via-global-secret-override  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-08-15. Updated: 2026-09-25  
License: CC BY 4.0 with a link back

CVE-2026-18500 · Severity: high · CVSS 8.1 · Published 2026-08-15

@fastify/jwt is a JSON Web Token authentication plugin for the Fastify web framework. In affected versions, an explicit per-request verification key is silently overridden by the plugin's global secret, allowing an authenticated user to use a token signed with the global key to access routes that require a different key. This bypasses authorization boundaries between separate security domains (e.g., user vs. admin access).

Vendors: [OpenJS Foundation](https://junglewise.ai/threats/vendors/openjs-foundation).

## Quick answers

**Is CVE-2026-18500 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-18500 being exploited in the wild.

**How severe is CVE-2026-18500?** High severity, with a CVSS score of 8.1, published 15 August 2026.

**Which products and versions are affected?** OpenJS Foundation @Fastify/Jwt < 10.2.2.

**Is there a fix for CVE-2026-18500?** A patch was published on 2026-08-15: Version 10.2.2 released Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-18500 attacked?** It is attacked over the network.

**Am I affected by CVE-2026-18500?** Check whether you run OpenJS Foundation @Fastify/Jwt at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## Technical details

This is an improper cryptographic signature verification vulnerability (CWE-347) in @fastify/jwt versions before 10.2.2. The root cause is that the plugin's option merge logic applies the global secret last, overriding any per-request key explicitly passed to request.jwtVerify({ key }) or reply.jwtSign(payload, { key }). An authenticated attacker with a token signed using the global secret can exploit this to bypass authorization checks on routes designed to accept only tokens signed with a different key. The vulnerability requires the attacker to be already authenticated (low privilege) but no user interaction or out-of-band information about the target key is needed. The attack vector is network-based. Direct verification using fastify.jwt.verify(token, { key }) is not affected. The issue is fixed in version 10.2.2, where per-call keys take precedence over global secrets.

## Affected products

- OpenJS Foundation @fastify/jwt < 10.2.2

## Timeline

- 2026-08-14: disclosed
- 2026-08-15: advisory
- 2026-08-15: patched: Version 10.2.2 released

## References

- [https://cna.openjsf.org/security-advisories.html](https://cna.openjsf.org/security-advisories.html)
- [https://github.com/fastify/fastify-jwt/security/advisories/GHSA-j4cx-787j-xjqg](https://github.com/fastify/fastify-jwt/security/advisories/GHSA-j4cx-787j-xjqg)
