Live › vulnerability › CVE-2026-110024
Go to dashboardVersions of @fastify/jwt before 10.2.5 replace the global sign and verify defaults with per-call options instead of merging them. An attacker can then present tokens that were issued without an expiration or that exceed the configured maximum age, and they are accepted.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-23 21:57 UTC. All times on this page are UTC.
Applications that use the top-level sign and verify methods of @fastify/jwt and that rely on globally configured expiration or maximum token age. Exposure requires that a per-call option is passed, since that is what drops the defaults. Route-level decorators are not affected, and teams that only use those can skip it.
No product ranges from the sources yet.
npm ls @fastify/jwt (or pnpm why @fastify/jwt) to find the installed version.fastify.jwt.sign( or fastify.jwt.verify( that pass an options object, and check whether the app also sets global defaults such as expiresIn or maxAge at registration.@fastify/jwt to 10.2.5 or later.sign and verify call, or use the route-level decorators, which already merge options.Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
@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.
This page as .md · .json · in your agent: get_signal("CVE-2026-110024")
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.