Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAdmin misconfigures clockTolerance: Infinity
-
Deliveryexp/nbf validators receive ±Infinity modifier
-
ExploitPresent expired or not-yet-active JWT
-
ExecutionVerifier accepts token as valid
-
ImpactAuthenticate as token subject with stale credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
|
| Exploitation Conditions | Exploitation requires that the application be configured with createVerifier({ clockTolerance: Infinity }) - a non-default setting reachable only by someone with control over the verifier's configuration code or options (application administrator or equivalent). This is the explicit precondition and the primary limiting factor: default configurations are not affected. Because the option-validation only rejected negative/non-number values (not Infinity), the infinite value flows as ±Infinity modifiers into validateClaimDateValue, making exp and nbf comparisons always pass. A secondary persistence condition: the verifier's internal LRU cache derives infinite bounds, so cache entries created under this config remain valid even after a developer removes the Infinity setting, until LRU eviction. Once misconfigured, an attacker needs no authentication or user interaction to present an expired/not-yet-active token - the limiting factor is entirely the upstream misconfiguration, not the attacker's access. |
| Impact | This is a genuine-but-conditional weakness that scores moderate (CVSS 5.9) and should be treated as a configuration-hygiene / supply-chain hardening item rather than an urgent remotely-exploitable flaw. The CVSS vector (AV:N/AC:H/PR:H/UI:N) is internally consistent with the description: the high privileges (PR:H) and high complexity (AC:H) reflect that the vulnerability only manifests when an application administrator or equivalent configuration path sets clockTolerance to Infinity - a non-default, developer-chosen value. Exploitation status is 'publicly available exploit code exists' (the GHSA advisory includes a working empirical PoC verified against fast-jwt@HEAD on 2026-06-03); this is NOT the same as active exploitation. The CVE is NOT listed in CISA KEV and no EPSS score was provided in the input, so there is no signal of widespread or automated exploitation - consistent with a flaw that requires a prior misconfiguration to be present. The C:H/I:H impact is justified because accepting expired (exp) and not-yet-active (nbf) tokens defeats session-expiry controls (CWE-613), enabling continued authenticated access with stale tokens. Net: real bug with a confirmed PoC and a confirmed fix, but gated behind an operator mistake - prioritize dependency upgrade and config audit, not emergency patching. |
| Exploit ScenarioDerived | A developer or administrator sets createVerifier({ clockTolerance: Infinity }) (e.g. copied from a clock-skew troubleshooting snippet), which silently disables both exp and nbf checks. An attacker who possesses an expired or stolen-but-lapsed JWT - or a not-yet-valid token - then presents it to the service and is authenticated as the token subject. A public PoC demonstrating acceptance of both expired and future-dated tokens exists in the vendor GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
fast-jwt through 6.2.4 silently accepts expired and not-yet-active JSON Web Tokens when a verifier is constructed with clockTolerance set to Infinity, because the option validation only checks that the value is a number and non-negative rather than finite. The precondition is privileged and non-default: an application administrator or anyone controlling the verifier's configuration must explicitly set that value, which is why the assessed vector carries PR:H and the score remains moderate at 5.9; default configurations are unaffected. A secondary effect is that the verifier's internal LRU cache derives infinite validity bounds, so cached decisions made under the misconfiguration persist even after the Infinity setting is removed, until cache eviction. No active exploitation is recorded (not in CISA KEV), but publicly available exploit code exists in the upstream advisory, which demonstrates both the exp and nbf bypass empirically.
RemediationAI
Vendor-released patch: 6.3.0 - upgrade fast-jwt to 6.3.0 or later (npm install fast-jwt@6.3.0), which adds Number.isFinite validation for clockTolerance, clockTimestamp and cacheTTL and rejects Infinity and NaN at verifier construction; see the release at https://github.com/nearform/fast-jwt/releases/tag/v6.3.0 and the advisory at https://github.com/nearform/fast-jwt/security/advisories/GHSA-687g-22h4-j4w4. Upstream fix available (PR/commit); released patched version not independently confirmed. If upgrading is not immediately possible, never configure a verifier with clockTolerance: Infinity and audit all createVerifier call sites for non-finite values; keep clockTolerance to a small finite number (for example a few seconds) appropriate to your clock skew, and apply the same finiteness check to clockTimestamp and cacheTTL so the guards accept only finite, non-negative numbers. Because removing the setting is not sufficient on its own - verifier cache entries created under Infinity keep infinite bounds and stay valid until LRU eviction - fully restart the Node.js process (or recreate the verifier instance) after changing the configuration so stale cached decisions are discarded; the trade-off is a brief cold-cache period and, if you rely on cacheTTL for throughput, a temporary increase in signature-verification work. As a defence-in-depth control, issue short-lived tokens, validate issuer and audience, and monitor for acceptance of tokens whose exp or nbf lie far outside the expected window, since that pattern is the observable signature of this misconfiguration.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
fast-jwt is a Node.js JSON Web Token signing/verification library published on npm under the nearform scope (CPE cpe:2.3:a:nearform:fast-jwt). The flaw class is CWE-613, insufficient session expiration: the library's claim-date validation, in validateClaimDateValue (src/verifier.js), computes an adjusted boundary as value * 1000 + modifier and then compares it against the current time. clockTolerance is folded into that modifier with a sign flip - -clockTolerance for the nbf validator and +clockTolerance for the exp validator - so passing Infinity produces -Infinity and +Infinity respectively. Any comparison against ±Infinity is unconditionally true, meaning the expiration ('exp') and not-before ('nbf') checks always pass and the token is treated as valid regardless of its actual timestamps. The root cause is the option guard at src/verifier.js:531-533, which rejected non-numbers and negative values but treated Infinity as a legitimate positive number. The vulnerable configuration also propagates into the verifier's internal LRU cache, whose entries are keyed on derived validity bounds; entries created while Infinity was in effect remain valid until LRU eviction, extending the exposure window beyond the point at which the setting is corrected. The upstream fix (commit c0fb5b88b4c88ff2bdd194ca2c713599ad9e38b6) adds Number.isFinite checks and tightens the guards for clockTolerance, clockTimestamp and cacheTTL together, extending the error message to 'must be a finite, non-negative number.'
Know when Fast Jwt 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
AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N
Flaw only triggers under a non-default admin-set clockTolerance:Infinity config, so PR:H and AC:H; token-expiry bypass yields C:H/I:H, no availability impact (A:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
fast-jwt provides fast JSON Web Token (JWT) implementation. Prior to 6.3.0, fast-jwt createVerifier accepts Infinity for clockTolerance because its option validation checks type and negativity but not finiteness. In validateClaimDateValue, infinite positive and negative modifiers make exp and nbf comparisons always pass, allowing expired or not-yet-active tokens to be accepted. The verifier cache also derives infinite bounds, so entries created under this configuration can remain valid until eviction. Exploitation requires an application administrator or equivalent configuration path to set clockTolerance to Infinity. This issue is fixed in version 6.3.0.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Authentication and authorization bypass in fast-jwt 6.2.0 through 6.2.4 (npm, NearForm) lets a remote, unauthenticated a
Signed JSON Web Tokens whose payload is a JSON array silently bypass every configured claim validator in the npm package
Authentication and authorization bypass in fast-jwt 6.3.0 and earlier lets a remote, unauthenticated attacker submit a f
fast-jwt provides fast JSON Web Token (JWT) implementation. Rated medium severity (CVSS 5.9), this vulnerability is remo
Signature-verification bypass in NearForm fast-jwt 6.2.4 lets a remote, unauthenticated attacker forge HS256-signed JWTs
fast-jwt before 6.2.1 fails to properly validate JWTs when RegExp modifiers with stateful behavior (/g for global matchi
Expired JSON Web Tokens can keep being accepted by fast-jwt through version 6.3.3 when the verifier is created with cach
Denial of service in fast-jwt 5.0.0 through 6.2.0 allows authenticated remote attackers with user interaction to cause s
EUVD-2026-95345
GHSA-687g-22h4-j4w4
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB