Saltar al contenido principal

JWT — none algorithm + key confusion

JWT con alg: “none” es un token sin firma.

Categoría: Web · Vectores avanzados 🎯 Trinchera — JWT con alg: "none" es un token sin firma. Si el backend acepta el header sin validar — token válido sin clave. Key confusion: el backend usa la public key como HMAC secret; firmas el token con la public key (a veces accesible vía /jwks.json) y autentica. 🔗 Kill chain — Detección: alg: none o discrepancias entre firma y verify. Encontrar kid injectable → SQLi/path traversal en selección de clave. 📡 Huella defensiva — JWTs sin firma en logs, JWTs con alg inesperado, errores de verify silenciados. ⚠️ Falso amigo — Algunas libs viejas confunden HS256 con RS256 si el caller pasa la public key directamente a verify(token, pub). 🛡️ Remediación — Whitelist explícita de algoritmos (verify(token, key, {algorithms: ['RS256']})), nunca confiar en alg del header, rotación periódica de claves.
Volver al glosario completo Última actualización: 2026-06-11