Impacto del atacante
La validación incorrecta de JWT permite a los atacantes eludir los mecanismos de autenticación falsificando reclamaciones o reutilizando tokens caducados [S1]. Si un servidor acepta tokens sin una firma válida, un atacante puede modificar la carga útil para escalar privilegios o hacerse pasar por cualquier usuario [S1]. Además, no hacer cumplir el reclamo de vencimiento (exp) permite a un atacante usar un token comprometido indefinidamente [S1].
Causa raíz
Un token web JSON (JWT) es una estructura basada en JSON que se utiliza para representar reclamaciones firmadas digitalmente o protegidas de integridad [S1]. Los fallos de seguridad suelen deberse a dos lagunas principales en la implementación:
- Aceptación de JWT no seguros: si un servicio no exige estrictamente la verificación de firma, puede procesar "JWT no seguros" donde la firma está ausente y el algoritmo está configurado en "ninguno" [S1]. En este escenario, el servidor confía en las notificaciones de la carga útil sin verificar su integridad [S1].
- Validación de reclamo faltante: El reclamo
exp(tiempo de vencimiento) identifica el tiempo a partir del cual el JWT no debe aceptarse para el procesamiento de [S1]. La notificaciónaud(audiencia) identifica los destinatarios previstos del token [S1]. Si no se marcan, el servidor puede aceptar tokens caducados o destinados a una aplicación diferente [S1].
Arreglos concretos
- Aplicar firmas criptográficas: configure la aplicación para rechazar cualquier JWT que no utilice un algoritmo de firma sólido y preaprobado (como RS256).
- Validar vencimiento: implemente una verificación obligatoria para garantizar que la fecha y hora actuales sean anteriores a la hora especificada en el reclamo
exp[S1]. - Verificar audiencia: asegúrese de que la reclamación
audcontenga un valor que identifique el servicio local; si el servicio no está identificado en el reclamoaud, se debe rechazar el token [S1]. - Evitar repetición: utilice el reclamo
jti(ID de JWT) para asignar un identificador único a cada token, lo que permite al servidor rastrear y rechazar los tokens reutilizados [S1].
Estrategia de detección
Las vulnerabilidades en el manejo de JWT se pueden identificar analizando la estructura del token y el comportamiento de respuesta del servidor:
- Inspección de encabezado: Verifique el encabezado
alg(algoritmo) para asegurarse de que no esté configurado en "ninguno" y utilice los estándares criptográficos esperados [S1]. - Verificación de reclamaciones: Confirmación de la presencia y validez de las reclamaciones
exp(vencimiento) yaud(audiencia) dentro de la carga útil JSON [S1]. - Prueba de validación: prueba si el servidor rechaza correctamente los tokens que han caducado según el reclamo
expo que están destinados a una audiencia diferente según lo definido por el reclamoaud[S1].
