Ataques a tokens y refuerzo de seguridad
Defienda los flujos de autenticación frente al uso indebido.
Ataques a tokens y refuerzo de seguridad es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.
Los tokens como credenciales
En la autenticación moderna, los tokens son credenciales. Quien posea un token bearer válido será tratado como la parte autenticada hasta que el token caduque o se revoque.
- Por ello, el robo de un token equivale al robo de una credencial.
- El refuerzo de la seguridad se centra en limitar la duración de los tokens, vincularlos a su titular y habilitar una revocación rápida.
Esta lección aborda los ataques contra tokens de OAuth/OIDC/SAML y los controles defensivos para contrarrestarlos.
Confusión de algoritmos en JWT
Un ataque clásico contra JWT explota la cabecera alg.
- Si se acepta alg: none, un atacante puede falsificar tokens sin firma.
- En la confusión de RS256 con HS256, el atacante vuelve a firmar un token utilizando la clave pública RSA como secreto HMAC.
Defensa: fije el algoritmo esperado en el servidor y no permita nunca que el token determine qué ruta de verificación se ejecuta.
Vulnerable: verify(token, key) // alg taken from header
Hardened: verify(token, key, { algorithms: ["RS256"] })
// reject alg:none, reject HS* when RS* expectedRobo de tokens mediante XSS y registros
El compromiso de tokens más habitual consiste simplemente en robar un token válido.
- XSS lee tokens de
localStorageo de la memoria. - Los tokens incluidos en las URL se filtran mediante el historial del navegador, las cabeceras de referencia y los registros del servidor.
- Registro detallado de las cabeceras
Authorization.
Prefiera cookies httpOnly, Secure y SameSite para las sesiones del navegador, y elimine los tokens de los registros y las URL.
Set-Cookie: session=...; HttpOnly; Secure; SameSite=Lax
// keeps JS (and thus XSS) from reading the tokenAtaques de repetición
Un ataque de repetición reutiliza un token válido capturado para actuar como la víctima.
- Se mitiga mediante expiraciones breves, un
noncede un solo uso (OIDC) y el seguimiento del ID de la aserción (SAML). - TLS evita la captura pasiva en la red.
- Los tokens vinculados al remitente impiden la reutilización incluso si son robados.
Replay defenses:
short exp + nonce/jti uniqueness
TLS everywhere
sender-constrained tokens (mTLS / DPoP)Tokens vinculados al remitente
Cualquier persona que posea un token bearer puede utilizarlo. Los tokens vinculados al remitente asocian el token a una clave específica del cliente.
- Los tokens vinculados mediante mTLS (RFC 8705) asocian el token al certificado TLS del cliente.
- DPoP (RFC 9449) asocia el token a una clave de prueba de posesión que el cliente utiliza para firmar cada solicitud.
Así, un token robado resulta inútil sin la clave privada correspondiente.
DPoP: each request carries a signed proof JWT
DPoP: <proof-jwt signed with client private key>
Authorization: DPoP <access_token>Duraciones breves y rotación de tokens de renovación
Limite el periodo de utilidad de cualquier token robado.
- Mantenga los tokens de acceso con una duración breve (minutos).
- Utilice la rotación de tokens de renovación: cada renovación emite un token de renovación nuevo e invalida el anterior.
- Detecte la reutilización de un token de renovación ya rotado como señal de robo y revoque toda la cadena.
On /token refresh:
issue new RT, invalidate old RT
if old RT presented again -> breach -> revoke familyRevocación e introspección de tokens
Los JWT autocontenidos son válidos hasta que caducan, lo que complica la revocación. Proporcione mecanismos para cortar rápidamente el acceso.
- El endpoint de revocación (RFC 7009) invalida tokens de renovación y de acceso.
- La introspección (RFC 7662) permite que un servidor de recursos compruebe el estado de un token en tiempo real.
- Mantenga una lista de denegación por
jtipara las revocaciones críticas.
POST /introspect token=...
-> { "active": true, "sub": "...", "scope": "read" }
POST /revoke token=...Aplicación de audiencia y alcance
Un token válido no autoriza automáticamente el acceso a su API. Haga cumplir su propósito.
- Compruebe aud para impedir que un token emitido para otro servicio se reutilice en el suyo.
- Haga cumplir el scope en cada endpoint; no suponga que un token válido implica acceso total.
- Valide iss para bloquear tokens de emisores que no sean de confianza.
Esto evita la reutilización de tokens entre servicios y los abusos del tipo confused deputy.
Ataques de mix-up y entre proveedores
Cuando un cliente admite varios proveedores de identidad, los ataques de mix-up pueden engañarlo para que envíe a un endpoint elegido por el atacante un código o token emitido por otro IdP.
- El cliente pierde la referencia de qué AS originó la respuesta.
- Defensa: vincule las respuestas al emisor mediante el parámetro
iss(RFC 9207) y validestatepara cada proveedor.
/authorize ... &state=<provider-bound>
callback must include &iss=<expected-AS>
client verifies iss matches the AS it started withAlmacenamiento y transporte seguros
El lugar y la forma en que se almacenan los tokens determinan su exposición.
- Sesiones del navegador: cookies httpOnly, Secure y SameSite; evite
localStorage. - Móviles: llavero/keystore del sistema operativo, nunca archivos de texto plano.
- Servidores: gestor de secretos, cifrado en reposo y mínimo privilegio con alcance limitado.
- Utilice siempre TLS en tránsito; no incluya nunca tokens en cadenas de consulta.
Lista de comprobación para reforzar la seguridad de los tokens
Integre los controles en una línea base operativa.
- Fije los algoritmos; rechace
alg: noney los ataques de confusión. - Valide iss, aud, exp, signature, nonce/state.
- Utilice un TTL breve para los tokens de acceso y rotación de tokens de renovación con detección de reutilización.
- Prefiera tokens vinculados al remitente (DPoP/mTLS) para las API de alto valor.
- Admita la revocación y la introspección.
- Almacene los tokens de forma segura; manténgalos fuera de las URL y los registros.
Hardening baseline:
[ ] alg pinned, none rejected
[ ] iss/aud/exp/sig/nonce validated
[ ] short TTL + RT rotation + reuse detection
[ ] DPoP/mTLS for sensitive scopes
[ ] revoke + introspect availableComprobación rápida: neutralizar tokens robados
Elija el control que limite mejor el daño causado por el propio robo de tokens.
Repaso: ataques contra tokens y refuerzo de la seguridad
Ideas clave:
- Los tokens son credenciales; su robo equivale a la toma de control de la cuenta.
- Defienda los JWT fijando los algoritmos y validando iss, aud, exp, signature, nonce.
- Limite la exposición mediante duraciones breves y rotación de tokens de renovación con detección de reutilización.
- Los tokens vinculados al remitente (DPoP/mTLS) neutralizan los tokens bearer robados.
- Proporcione revocación e introspección, y mantenga los tokens fuera de las URL, los registros y localStorage.
Preguntas frecuentes
¿La lección «Ataques a tokens y refuerzo de seguridad» es gratis?
Sí — el texto completo de «Ataques a tokens y refuerzo de seguridad» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Ataques a tokens y refuerzo de seguridad»?
Defienda los flujos de autenticación frente al uso indebido. Practicas Cyber Security Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cyber Security Academy?
No se requiere experiencia previa. Cyber Security Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Ataques a tokens y refuerzo de seguridad»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cyber Security Academy?
Sí. Cada lección de Cyber Security Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Flujos de OAuth 2.0
- OpenID Connect (OIDC)
- SAML y federación
- Ataques a tokens y refuerzo de seguridad