High severity · published Aug 15, 2026
CVE-2026-18500
@fastify/jwt vulnerable to authorization bypass via global secret overriding the per-request key
8.1
CVSS
0.3%
EPSS
No
On KEV
Description
@fastify/jwt is a JSON Web Token plugin for Fastify. In versions before 10.2.2, a per-request verification key passed to request.jwtVerify({ key }) is silently overridden by the plugin's globally configured secret, because the option merge applies the global key last. Applications that use different keys for different authorization domains, for example separate user and admin keys, therefore accept a token signed with the global key on a route that explicitly requires another key. This lets an ordinary authenticated user cross a key-based trust boundary without knowing either secret. The issue is fixed in @fastify/jwt 10.2.2, where an explicit per-call key takes precedence over the global secret. Users should upgrade to 10.2.2.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Attack vector
Network
Complexity
Low
Privileges
Low
User interaction
None
Confidentiality
High
Integrity
High
Availability
None
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.3% · higher than 17% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
FA
@fastify/jwt · @fastify/jwt
before 10.2.2 · source: vendor
FA
Fastify/jwt · Fastify
before 10.2.2 · source: NVD
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-18500
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-18500
Vendor Advisory
https://cna.openjsf.org/security-advisories.html
Mitigation
https://github.com/fastify/fastify-jwt/security/advisories/GHSA-j4cx-787j-xjqg
More from @fastify/jwt
6.8
CVE-2026-110024
@fastify/jwt vulnerable to missing token expiration when per-call options drop global defaults
6.8
CVE-2026-107275
@fastify/jwt vulnerable to missing token expiration when temporal options cannot be parsed
