CVE-2026-110024
Received Received - Intake

JWT Token Expiration Bypass in Fastify JWT Plugin

Vulnerability report for CVE-2026-110024, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-18

Last updated on: 2026-10-18

Assigner: openjs

Description

@fastify/jwt is a JWT utility plugin for Fastify. In versions prior to 10.2.5, the top-level sign and verify methods replace the globally configured defaults with the per-call options instead of merging them, so passing any per-call option silently drops every global default that the call does not restate, including temporal protections such as token expiration and maximum accepted token age. A token signed this way carries no expiration claim and never expires, and verification stops enforcing a configured maximum age, so stale or never-expiring tokens are accepted. The route-level decorators for signing and verifying already merge options and are not affected. The issue is fixed in @fastify/jwt 10.2.5, and users should upgrade to 10.2.5 or later.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-18
Last Modified
2026-10-18
Generated
2026-10-18
AI Q&A
2026-10-18
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
@fastify/jwt @fastify/jwt 0

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-613 According to WASC, "Insufficient Session Expiration is when a web site permits an attacker to reuse old session credentials or session IDs for authorization."

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

The @fastify/jwt plugin for Fastify, versions before 10.2.5, has a flaw where top-level sign and verify methods replace global default settings instead of merging them with per-call options. This causes tokens to lack expiration claims or maxAge enforcement, allowing indefinitely valid or expired tokens to be accepted.

Detection Guidance

Check the version of @fastify/jwt in your project using npm list @fastify/jwt or grep the package.json file. If the version is below 10.2.5, the system is vulnerable. Review code using top-level fastify.jwt.sign() or fastify.jwt.verify() methods outside route handlers to confirm if global defaults like expiresIn or maxAge are set.

Impact Analysis

If you use the affected top-level APIs (fastify.jwt.sign or fastify.jwt.verify) with global temporal protections like expiresIn or maxAge, tokens may become valid indefinitely or expired tokens may be accepted. This could lead to unauthorized access or data breaches if stale tokens are used.

Compliance Impact

This vulnerability could violate compliance requirements that mandate token expiration and access controls, such as GDPR's data retention principles or HIPAA's access authorization rules. Accepting stale or indefinite tokens may lead to unauthorized data access.

Mitigation Strategies

Upgrade @fastify/jwt to version 10.2.5 or later immediately. If immediate upgrade is not possible, restate global defaults in per-call options or switch to using reply.jwtSign and request.jwtVerify route decorators which are not affected.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-110024. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart