fast-jwt accepts public JWK JSON as HMAC key, enabling token forgery
Key facts
- Attack vector
- Network
- Privileges required
- None
- 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 and GitHub. Impact type from CWE-347.
Summary
fast-jwt versions from 6.2.4 before 6.3.0 are affected. The library treats raw serialized public JWK or JWKS JSON as an HMAC secret, which is an improper verification of a cryptographic signature (CWE-347). If HS256 is allowed or inferred, an attacker who knows the exact serialized public key bytes can use them as an HMAC key to create a token with arbitrary claims that the verifier accepts. Exploitation can fail due to serialization ordering or whitespace differences, and applications that use PEM keys with an asymmetric-only algorithm allowlist are not affected.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
Description from the CNA
fast-jwt provides fast JSON Web Token (JWT) implementation. In 6.2.4, fast-jwt can classify raw serialized public JWK or JWKS JSON as an HMAC secret because src/crypto.js performDetectPublicKeyAlgorithms treats non-PEM strings as symmetric key material. If HS256 is explicitly allowed or inferred, an attacker who knows the exact serialized public-key bytes can use those bytes as an HMAC key and create a token containing arbitrary claims that createVerifier accepts. Serialization ordering or whitespace differences can prevent exploitation, and applications using supported PEM keys with an asymmetric-only algorithm allowlist are not affected. This issue is fixed in version 6.3.0.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- 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 |
|---|---|---|---|---|---|
| nearform | fast-jwt | 6.2.4 to before 6.3.0 | 6.3.0 | Patch available | CNA |
| — | fast-jwt (npm) | 6.2.4 to before 6.3.0 | 6.3.0 | Patch available | GHSA-g3jj-5cmm-3hxx |
- fast-jwt Vendornearform Affected 6.2.4 to before 6.3.0 Fixed in 6.3.0 Patch available CNA
- fast-jwt (npm) Vendor— Affected 6.2.4 to before 6.3.0 Fixed in 6.3.0 Patch available GHSA-g3jj-5cmm-3hxx
Remediation
Upgrade the npm package fast-jwt to version 6.3.0, which fixes this issue.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
- Fix · CNA fast-jwt (nearform) Fixed in 6.3.0
- Fix · GHSA-g3jj-5cmm-3hxx fast-jwt (npm) Fixed in 6.3.0 Advisory →
Timeline
- 2026-10-09 Threatist record created from CVE-2026-107724
- 2026-10-09 Alias added: GHSA-g3jj-5cmm-3hxx
- 2026-10-10 CISA SSVC decision points changed
- 2026-10-10 Priority changed: MEDIUM → HIGH
References
Other 5
More nearform vulnerabilities
- TI-2026-69702 Incomplete fix in fast-jwt enables RSA to HS256 algorithm confusion CVSS 3.1CRITICAL 9.8
- TI-2026-27174 fast-jwt has an incomplete fix for CVE-2023-48223: JWT Algorithm Confusion via Whitespace-Prefixed RSA Public Key CVSS 3.1CRITICAL 9.1
- TI-2025-37324 get-jwks poisoned JWKS cache allows post-fetch issuer validation bypass CVSS 3.0CRITICAL 9.4
- TI-2026-27245 fast-jwt accepts unknown `crit` header extensions (RFC 7515 §4.1.11 MUST violation) CVSS 3.1HIGH 7.5
- TI-2026-69684 Claim validator bypass in fast-jwt when JWT payload is a JSON array CVSS 3.1HIGH 8.1
- TI-2026-69689 fast-jwt accepts unsigned JWTs when the key is empty or null CVSS 3.1HIGH 7.4
Sources
- CVE-2026-107724 · CVE Program
- CVE-2026-107724 · NVD
- FIRST EPSS
- GHSA-g3jj-5cmm-3hxx · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences