Cómo los hackers eluden la autenticación por token JWT
Aprende cómo los hackers pueden explotar vulnerabilidades en los tokens JWT y descubre cómo mejorar la seguridad de tus aplicaciones web.
Los JSON Web Tokens (JWT) son un método popular de autenticación y autorización en aplicaciones web. Un token JWT es una forma compacta y segura para URL de transferir declaraciones (claims) entre partes. Está compuesto por tres partes: el encabezado (header), la carga útil (payload) y la firma. El encabezado contiene información sobre el tipo de token y los algoritmos utilizados, la carga útil contiene las declaraciones (datos del usuario) y la firma se utiliza para verificar la integridad del token.
1. Reutilización de tokens
Si un hacker roba un token JWT válido, puede utilizarlo para acceder a recursos protegidos sin la autenticación adecuada. Esto puede ocurrir si los tokens JWT no se gestionan correctamente o si el servidor no está bien configurado para hacer que los tokens JWT caduquen automáticamente después de un tiempo determinado. Si un token no caduca a tiempo, un hacker puede reutilizar el token robado para acceder a recursos protegidos.
2. Modificar la carga útil del token
Un hacker puede intentar manipular el contenido del token JWT, por ejemplo cambiando la firma o alterando el contenido del token. Si el hacker consigue modificar la firma, puede acceder a recursos que solo están disponibles para usuarios autenticados. Si se modifica el contenido del token, el hacker puede, por ejemplo, hacerse pasar por otro usuario para acceder a recursos protegidos. En el siguiente ejemplo, el hacker cambia su rol de is_admin:false a is_admin:true
{ "sub": "1234567890", "name": "Bob de jong", "is_admin": false }
Se puede hacer que parezca que este usuario es 'admin' si no existe una validación adecuada de la firma.
{ "sub": "1234567890", "name": "Bob de jong", "is_admin": true }
3. Bruteforcing de tokens JWT
Otra forma en la que los hackers intentan descifrar tokens JWT es mediante bruteforcing. Esto consiste en que el hacker intenta adivinar la firma del token probando sistemáticamente distintas combinaciones de datos hasta encontrar la firma correcta.
La firma de un token JWT se genera mediante un algoritmo criptográfico como HMAC o RSA, que utiliza una clave secreta. Si el hacker logra averiguar esta clave, puede generar la firma del token y darse acceso a recursos protegidos.
Para aplicar fuerza bruta, el hacker puede, por ejemplo, utilizar una lista de contraseñas o claves de uso común y probarlas hasta encontrar la clave correcta. Sin embargo, esto puede ser un proceso largo y que consume mucho tiempo, especialmente si la clave es fuerte y compleja.
Para evitar el bruteforcing, es importante utilizar una clave fuerte y compleja para generar la firma del token JWT. Esto significa que la clave debe ser lo bastante larga y estar compuesta por una combinación de mayúsculas, minúsculas, números y caracteres especiales.
Puedes comprobar tú mismo si el token JWT de tu organización es seguro utilizando una herramienta como jwt-cracker. Esta herramienta se encuentra aquí en github.
Ejemplo
jwt-cracker -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ -a abcdefghijklmnopqrstuwxyz --max 6
Además de los tokens JWT, los cibercriminales también abusan con frecuencia de las API (Application Programming Interfaces). Estas API permiten la conexión entre diferentes aplicaciones. Si tienes curiosidad por saber cómo los cibercriminales abusan de las API, ¡lee nuestro blog!
¿Quieres revisar tu Ciberseguridad?
¿Sigues teniendo dudas sobre las medidas de Ciberseguridad que aplica tu organización a pesar de este blog? Ponte en contacto con nosotros. En Tozetta somos especialistas en pentesting. Un pentest se puede realizar en una red interna, una aplicación web o una aplicación móvil. Siempre estamos dispuestos a pensar contigo sin ningún compromiso. Siempre estamos dispuestos a realizar un QuickScan gratuito, del cual resulta una propuesta de pentest. ¿Prefieres probar de forma continua las vulnerabilidades de tu ciberseguridad? Entonces considera una de nuestras suscripciones de hacking as a service.