Descripción
fast-jwt proporciona una implementación rápida de JSON Web Token (JWT). Desde la versión 6.2.0 hasta la 6.3.0, fast-jwt puede clasificar erróneamente el texto de una clave pública RSA como un secreto HMAC cuando la clave tiene contenido distinto de espacios en blanco antes de su encabezado PEM. En src/crypto.js, performDetectPublicKeyAlgorithms elimina los espacios en blanco, pero publicKeyPemMatcher sigue anclado al inicio, por lo que comentarios, caracteres de control, caracteres de ancho cero o texto envolvente pueden impedir la detección de PEM y llegar al mecanismo alternativo HMAC. Un atacante que conozca los bytes de la clave pública puede firmar claims HS256 arbitrarios con ese material público cuando HS256 se infiere o está permitido, lo que resulta en una omisión de autenticación o de autorización. Una lista de algoritmos permitidos exclusivamente asimétricos impide el ataque. Este problema está corregido en la versión 6.3.0.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- fast-jwt Afectadas: >= 6.2.0, < 6.3.0
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en github.comgithub.com/nearform/fast-jwt/security/advisories/GHSA-ww5h-9m49-7xx4
- Referencia en github.comgithub.com/nearform/fast-jwt/pull/632
- Referencia en github.comgithub.com/nearform/fast-jwt/commit/d96bbc6c5336055a6dbfa318fdbab0119…
- Referencia en github.comgithub.com/nearform/fast-jwt/releases/tag/v6.3.0
Ver el texto original en inglés (CVE.org)
fast-jwt: Incomplete patch of CVE-2026-34950: Non-whitespace key-prefix re-enables RSA→HS256 algorithm confusion
fast-jwt provides fast JSON Web Token (JWT) implementation. From 6.2.0 until 6.3.0, fast-jwt can misclassify RSA public-key text as an HMAC secret when the key has non-whitespace content before its PEM header. In src/crypto.js, performDetectPublicKeyAlgorithms trims whitespace but publicKeyPemMatcher remains start-anchored, so comments, control characters, zero-width characters, or wrapper text can prevent PEM detection and reach the HMAC fallback. An attacker who knows the public key bytes can sign arbitrary HS256 claims with that public material when HS256 is inferred or allowed, resulting in authentication or authorization bypass. An asymmetric-only algorithm allowlist prevents the attack. This issue is fixed in version 6.3.0.