Skip to content

Un pentest informa de que tu API acepta JWT con `alg: none`. ¿Cuál es el impacto y la corrección?

Respuesta breve

`alg: none` permite a cualquiera fabricar un token sin firmar de apariencia válida y suplantar a cualquier usuario — una elusión total de autenticación, no un hallazgo menor. Corrígelo permitiendo en el servidor una lista blanca de los algoritmos esperados y verificando siempre la firma con la clave correcta; nunca confíes en el encabezado alg del propio token para elegir el método de verificación. Una expiración más larga o cambiar dónde se guarda el token no hace nada contra tokens falsificados y sin firmar. Es crítico y explotable, así que documentar no es una corrección.

La seguridad de un JWT proviene por completo de su firma. El campo alg del encabezado le dice al verificador qué algoritmo se usó — pero si el servidor confía en ese campo y se permite none, omite por completo la verificación de la firma. Un atacante envía entonces un token con el encabezado {"alg":"none"}, la carga útil que quiera (por ejemplo un sub distinto o un rol de administrador) y una firma vacía. El servidor lo da por válido.

Por qué es crítico, no cosmético

Es una elusión completa de la autenticación. El atacante no necesita romper una clave ni adivinar un secreto — simplemente afirma quién es y el servidor le cree. Puede suplantar a cualquier usuario, incluidos administradores, con un token falsificado en segundos. Es el peor resultado posible para un sistema de autenticación, por lo que la opción de "impacto bajo, documentarlo" es peligrosamente errónea.

La corrección correcta

  • Permitir en el servidor una lista blanca de los algoritmos esperados (p. ej. solo RS256). Rechaza todo lo demás y rechaza explícitamente none.
  • Verificar siempre la firma con la clave correcta antes de leer cualquier reclamación.
  • Nunca dejar que el encabezado alg del token elija la ruta de verificación. Desacoplar la confianza de la entrada controlada por el atacante también bloquea el ataque de confusión de algoritmo, donde un token pasa de RS256 a HS256 para que la clave pública se use indebidamente como secreto HMAC.

Por qué fallan los distractores

  • Una expiración más larga cambia cuánto vive un token legítimo; no hace nada con tokens que nunca se firmaron válidamente.
  • Mover el token a una cookie afecta al transporte y a la exposición a XSS/CSRF, no a si se acepta un token sin firmar falsificado.

Qué evalúa el entrevistador

Si entiendes que la firma es el ancla de confianza completa, sabes articular con claridad la elusión y recurres a una lista blanca de algoritmos en el servidor con verificación obligatoria — el criterio que se espera de un ingeniero AppSec sénior.

Posibles preguntas de seguimiento

  • ¿Cómo funciona el ataque relacionado de confusión `RS256` a `HS256` y cómo se previene?
  • ¿Dónde debe residir la lista blanca de algoritmos y por qué tiene que estar en el servidor?
  • ¿Cómo detectarías intentos de falsificación `alg: none` en tus registros?

Fuentes

Consigue 100 preguntas de entrevista de ciberseguridad + respuestas

Déjanos tu correo y te enviaremos el pack en PDF gratuito y el mazo de flashcards.

Sin spam. Cancela tu suscripción cuando quieras.