Read the docs

fast-jwt accepts public JWK JSON as HMAC key, enabling token forgery

Priority HIGH 68CWE-347Published · Updated

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

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00282 20th percentileScored 2026-11-07
Fix Fixed fast-jwt (nearform): 6.3.0fast-jwt (npm): 6.3.0

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

VendorProductAffected versionsFixed inStatusSource
nearformfast-jwt6.2.4 to before 6.3.06.3.0Patch availableCNA
—fast-jwt (npm)6.2.4 to before 6.3.06.3.0Patch availableGHSA-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

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:a:nearform:fast-jwt:*:*:*:*:*:*:*:*——nearform
  • cpe:2.3:a:nearform:fast-jwt:*:*:*:*:*:*:*:* Versions — — ·nearform

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

  1. 2026-10-09 Threatist record created from CVE-2026-107724
  2. 2026-10-09 Alias added: GHSA-g3jj-5cmm-3hxx
  3. 2026-10-10 CISA SSVC decision points changed
  4. 2026-10-10 Priority changed: MEDIUM → HIGH

References

  • 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
See all 15 →

Sources