Missing token expiration in @fastify/jwt when time spans cannot be parsed
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- High
- Impact type
- Security bypass
- Confidentiality · integrity · availability
- High · High · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-613.
Summary
@fastify/jwt versions before 10.2.3 silently drop a time span passed to expiresIn, notBefore or maxAge when the parser cannot read it, such as a compound span, a month unit or an ISO 8601 duration. Signed tokens can then have no expiration claim and never expire, and a configured maxAge is not enforced during verification. The flaw is an improper check for unusual or exceptional conditions (CWE-754). Exploitation requires network access, low privileges and high attack complexity, and it can get tokens accepted that should have been rejected for age.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
Description from the CNA
@fastify/jwt is a JSON Web Token plugin for the Fastify web framework. In versions before 10.2.3, a time span passed to expiresIn, notBefore, or maxAge that the plugin's parser cannot read, such as a compound span, a month unit, an ISO 8601 duration, a decimal comma, or a value with surrounding whitespace, is silently dropped instead of refused. On the signing path this produces a token with no expiration claim that never expires, and on the verification path a configured maxAge stops being enforced, so a token that should be rejected for age is accepted. The issue is fixed in @fastify/jwt 10.2.3, and users should upgrade to 10.2.3 or later. As a workaround, pass these options as a number of seconds, or verify that any time-span string parses to a finite value before relying on it.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| @fastify/jwt | @fastify/jwt | before 10.2.3 | 10.2.3 | Patch available | CNA |
- @fastify/jwt Vendor@fastify/jwt Affected before 10.2.3 Fixed in 10.2.3 Patch available CNA
Remediation
Upgrade @fastify/jwt to version 10.2.3 or later, which fixes the issue. As a workaround, pass these options as a number of seconds instead of a time-span string.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
- Fix · CNA @fastify/jwt (@fastify/jwt) Fixed in 10.2.3
Timeline
- 2026-10-08 Threatist record created from CVE-2026-107275
References
More @fastify/jwt vulnerabilities
- TI-2026-76030 Missing token expiration in @fastify/jwt per-call options CVSS 3.1MEDIUM 6.8
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences