0Pricing
Cyber Security Academy · Lección

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* expected

Robo 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 localStorage o 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 token

Ataques 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 nonce de 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 family

Revocació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 jti para 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 valide state para cada proveedor.
/authorize ... &state=<provider-bound>
callback must include &iss=<expected-AS>
client verifies iss matches the AS it started with

Almacenamiento 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: none y 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 available

Comprobació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

  1. Flujos de OAuth 2.0
  2. OpenID Connect (OIDC)
  3. SAML y federación
  4. Ataques a tokens y refuerzo de seguridad
← Volver a Cyber Security Academy