Security Vulnerability Report
中文
CVE-2026-35040 CVSS 5.3 MEDIUM

CVE-2026-35040

Published: 2026-04-09 16:16:27
Last Modified: 2026-04-17 20:10:05

Description

fast-jwt provides fast JSON Web Token (JWT) implementation. Prior to 6.2.1, using certain modifiers on RegExp objects in the allowedAud, allowedIss, allowedSub, allowedJti, or allowedNonce options in verify functions can cause certain unintended behaviours. This is because some modifiers are stateful and will cause failures in every second verification attempt regardless of the validity of the token provided. Such modifiers are /g (global matching) and /y (sticky matching). This does NOT allow invalid tokens to be accepted, only for valid tokens to be improperly rejected in some configurations. Instead it causes 50% of valid authentication requests to fail in an alternating pattern. This vulnerability is fixed in 6.2.1.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

Configurations (Affected Products)

cpe:2.3:a:nearform:fast-jwt:*:*:*:*:*:node.js:*:* - VULNERABLE
fast-jwt < 6.2.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
const fastJwt = require('fast-jwt'); // Create a verifier with a global regex (stateful modifier) const verify = fastJwt.createVerifier({ key: 'secret', allowedIss: /some-issuer/g // Vulnerable: using /g modifier }); const token = 'valid.token.payload'; // Assume a valid token for some-issuer // First verification attempt try { const payload1 = verify(token); console.log('Attempt 1: Success'); } catch (e) { console.log('Attempt 1: Failed'); } // Second verification attempt (same token) try { const payload2 = verify(token); console.log('Attempt 2: Success'); } catch (e) { console.log('Attempt 2: Failed - Stateful regex caused this'); }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-35040", "sourceIdentifier": "[email protected]", "published": "2026-04-09T16:16:27.213", "lastModified": "2026-04-17T20:10:05.477", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "fast-jwt provides fast JSON Web Token (JWT) implementation. Prior to 6.2.1, using certain modifiers on RegExp objects in the allowedAud, allowedIss, allowedSub, allowedJti, or allowedNonce options in verify functions can cause certain unintended behaviours. This is because some modifiers are stateful and will cause failures in every second verification attempt regardless of the validity of the token provided. Such modifiers are /g (global matching) and /y (sticky matching). This does NOT allow invalid tokens to be accepted, only for valid tokens to be improperly rejected in some configurations. Instead it causes 50% of valid authentication requests to fail in an alternating pattern. This vulnerability is fixed in 6.2.1."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-440"}, {"lang": "en", "value": "CWE-697"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:nearform:fast-jwt:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "6.2.1", "matchCriteriaId": "2B44A0FB-C037-42E0-9666-7491FF59219D"}]}]}], "references": [{"url": "https://github.com/nearform/fast-jwt/commit/18d25904e4617e8753526d1b3ab5a2cccdea726a", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/nearform/fast-jwt/pull/593", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/nearform/fast-jwt/releases/tag/v6.2.1", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/nearform/fast-jwt/security/advisories/GHSA-3j8v-cgw4-2g6q", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}]}}