Skip to main content

@fastify/jwt CVE-2026-18500

| EUVDEUVD-2026-59757 HIGH
Improper Verification of Cryptographic Signature (CWE-347)
2026-08-15 ce714d77-add3-4f53-aff5-83d477b104bb
8.1
CVSS 3.1 · Vendor: ce714d77-add3-4f53-aff5-83d477b104bb
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Authenticate via standard user endpoint
  2. Delivery
    Receive JWT signed with global secret
  3. Exploit
    Identify privileged route using per-request key enforcement
  4. Install
    Submit global-secret token to restricted route
  5. C2
    Plugin merge overwrites per-request key with global secret
  6. Execute
    Signature verifies against global key
  7. Impact
    Access privileged data or administrative functions

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

Exploitation requires two specific conditions to be met simultaneously: the target application must run @fastify/jwt at any version below 10.2.2, AND it must implement per-request key differentiation by passing a key argument to request.jwtVerify({ key }) on at least one route. Applications using a single global JWT secret for all routes are completely unaffected regardless of version. The attacker must be an authenticated low-privilege user (consistent with CVSS PR:L) possessing a valid JWT token signed by the application's global secret - they do not need to know or forge the route-specific key. Exploitation is limited to multi-domain trust architectures; a standard monolithic JWT deployment without key separation is immune.

Impact

The CVSS 8.1 score (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N) accurately characterizes risk for the subset of deployments affected, though the realistic attack surface is meaningfully narrower than the score alone implies - only applications explicitly calling request.jwtVerify({ key }) with a per-request override are vulnerable, making single-key deployments entirely immune. No EPSS data was provided, and the vulnerability is absent from the CISA KEV catalog, so active exploitation is not confirmed; no public exploit code is known. The privilege separation failure is architecturally severe when triggered: an attacker needs only a valid global-secret token to impersonate an admin or cross any key-based trust boundary the application defines. Even a mid-sized municipal IT team in bytom running Fastify-based services with separated admin and user JWT keys should treat this as urgent given the trivial exploitation complexity and the availability of the 10.2.2 patch. The CVSS integrity and confidentiality impacts of High are well-supported - privilege escalation enables both data exfiltration and unauthorized writes. The absence of availability impact is consistent with the nature of the bypass.

Exploit ScenarioDerived

An authenticated user authenticates via a standard low-privilege endpoint and receives a JWT signed with the application's global secret. They then send that token in a request to an admin-restricted route that calls request.jwtVerify({ key: adminKey }). Because @fastify/jwt's merge logic overwrites adminKey with the global secret before verification, the token passes the cryptographic check and the attacker gains full access to privileged functionality. No public exploit code has been identified, but the attack requires only a standard JWT library and knowledge of the target route.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 15, 2026

Key-based authorization bypass in @fastify/jwt before 10.2.2 permits any low-privileged authenticated user holding a token signed by the application's global secret to access routes explicitly restricted to a separate per-request key, silently crossing a cryptographic trust boundary. Applications implementing multi-domain JWT authorization - for example, separating user and admin token verification keys - are specifically at risk, as the plugin's option merge incorrectly applies the global key last, overriding the developer-supplied per-request key. No public exploit code has been identified and the vulnerability is not listed in the CISA KEV catalog, but the fix is available in version 10.2.2 and the attack path is mechanically straightforward for any authenticated user.

RemediationAI

Upgrade @fastify/jwt to version 10.2.2, the confirmed patched release per the vendor security advisory at https://github.com/fastify/fastify-jwt/security/advisories/GHSA-j4cx-787j-xjqg. In 10.2.2, an explicit per-call key correctly takes precedence over the global secret, restoring the intended trust domain isolation. For teams unable to upgrade immediately, a compensating control is to restructure the application to use separate registered Fastify plugin instances - each with its own globally configured secret - rather than relying on per-request key overrides; this eliminates the vulnerable code path but requires application refactoring and adds deployment complexity. There is no configuration-only workaround that fully mitigates the vulnerability without code changes. Additional security advisory details are available at https://cna.openjsf.org/security-advisories.html.

Affected VersionsENISA

@fastify/jwt 0 <10.2.2

Affected Packages

euvd fastify_jwt fix: 10.2.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The @fastify/jwt plugin (EUVD-2026-59757) provides JWT authentication middleware for the Fastify Node.js web framework. Its request.jwtVerify() method accepts an optional key parameter intended to override the globally configured secret for per-route trust domain separation. Due to incorrect option merge ordering - the global secret is applied last rather than first - any developer-supplied per-request key is silently overwritten before signature verification occurs. This maps to CWE-347 (Improper Verification of Cryptographic Signature): the HMAC or RSA signature is verified correctly, but against the wrong key, causing the cryptographic check to pass with an unintended secret. The affected package covers all releases from 0 up to but not including 10.2.2, as documented in the EUVD affected version range '@fastify/jwt 0 < 10.2.2'.

Know when Fastify gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (ce714d77-add3-4f53-aff5-83d477b104bb) PRIMARY 8.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

Network-exploitable by any authenticated token holder (PR:L); AC:L because no special conditions beyond targeting a multi-key route; no availability impact applies.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (ce714d77-add3-4f53-aff5-83d477b104bb).

CVSS VectorVendor: ce714d77-add3-4f53-aff5-83d477b104bb

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Aug 15, 2026 - 14:19 EUVD
CVE Published
Aug 15, 2026 - 14:17 cve.org
HIGH 8.1

DescriptionCVE.org

@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.

Executive ViewAI

Why It Matters

A vulnerability in @fastify/jwt before version 10.2.2 allows authenticated users to bypass authorization controls when applications implement separate security keys for different roles. While no public exploit identified at time of analysis, the attack mechanism is straightforward and puts organizations at risk of unauthorized administrative access. Applications that separate user and administrator permission levels are specifically vulnerable.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 95% exploitable
Prevalence
Medium
popular JWT plugin within the Fastify Node.js ecosystem
Social Media
2
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2023-31999 HIGH POC
8.8 Jul 04

All versions of @fastify/oauth2 used a statically generated state parameter at startup time and were used across all req

CVE-2021-22964 HIGH POC
8.8 Oct 14

A redirect vulnerability in the `fastify-static` module version >= 4.2.4 and < 4.4.1 allows remote attackers to redirect

CVE-2025-32442 HIGH POC
7.5 Apr 18

Fastify is a fast and low overhead web framework, for Node.js. Rated high severity (CVSS 7.5), this vulnerability is rem

CVE-2020-8136 HIGH POC
7.5 Mar 20

Prototype pollution vulnerability in fastify-multipart < 1.0.5 allows an attacker to crash fastify applications parsing

CVE-2018-3711 HIGH POC
7.5 Jun 07

Fastify node module before 0.38.0 is vulnerable to a denial-of-service attack by sending a request with "Content-Type: a

CVE-2020-8192 MEDIUM POC
6.5 Jul 30

A denial of service vulnerability exists in Fastify v2.14.1 and v3.0.0-rc.4 that allows a malicious user to trigger reso

CVE-2021-22963 MEDIUM POC
6.1 Oct 14

A redirect vulnerability in the fastify-static module version < 4.2.4 allows remote attackers to redirect users to arbit

CVE-2026-6556 CRITICAL
9.1 Jun 30

Authorization bypass in the @fastify/express middleware-compatibility plugin (versions 4.0.6 and earlier) lets unauthent

CVE-2026-33808 CRITICAL
9.1 Apr 15

Authentication bypass in @fastify/express v4.0.4 and earlier allows remote unauthenticated attackers to access protected

CVE-2026-33807 CRITICAL
9.1 Apr 15

Middleware bypass in Fastify Express plugin (fastify/express) allows complete circumvention of authentication, authoriza

CVE-2022-41919 HIGH
8.8 Nov 22

Fastify is a web framework with minimal overhead and plugin architecture. Rated high severity (CVSS 8.8), this vulnerabi

CVE-2026-2880 HIGH
8.2 Feb 27

Authentication and authorization bypass in @fastify/middie (Node.js middleware library for Fastify) allows remote unauth

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy