¿Qué es el Broken Authentication?
La vulnerabilidad Broken Authentication ocurre cuando una API implementa de forma incorrecta o débil los mecanismos de identificación y gestión de identidad (login, registro, MFA, gestión de tokens, etc.). Un atacante explota estos fallos para suplantar identidades, comprometer cuentas masivamente o escalar privilegios.
Enfoque de la Falla: El sistema de identidad no puede garantizar que el usuario es quien dice ser o no maneja el ciclo de vida del token de manera segura, permitiendo su robo y reuso.
Ejemplos Comunes y Fallos de Explotación Críticos
JWT con Firma Mal Verificada: Tokens vulnerables a ataques como alg: none o manipulación del header kid (Key ID), permitiendo al atacante firmar un token con claims elevados (ej. "role": "admin").
Tokens Fugados y Reutilizables:
- El token se filtra en URLs, logs o almacenamiento inseguro del cliente.
- La API no implementa Token Binding o Context Checks, permitiendo la reutilización del token robado desde cualquier IP/dispositivo.
Flujos Inseguros (OAuth/OIDC): Fallas como la falta de validación del parámetro state (vulnerable a CSRF) o una validación permisiva del redirect_uri (vulnerable a Open Redirect y robo de códigos de autorización).
Metodología de Detección en Bug Bounty
La detección debe enfocarse en cada fase del ciclo de vida de la sesión, buscando la evasión y la persistencia del acceso no autorizado.
1. Revisión de Endpoints de Acceso y Autorización
Bypassing Authentication (Fallo Crítico): Intentar acceder a endpoints sensibles (/api/v1/user/profile, /api/v1/admin/dashboard) sin enviar el header Authorization o cookie de sesión. Una respuesta 200 OK en un recurso protegido es un fallo crítico de autenticación.
Flujo de Restablecimiento de Contraseña: Probar la manipulación de user_id o email justo antes de la confirmación de la nueva contraseña. Intentar secuestrar el flujo para actualizar la contraseña de otro usuario.
2. Análisis y Manipulación Avanzada de Tokens JWT
Utilizar JWT Inspector para decodificar y modificar el token.
Escalada de Roles/Privilegios: Modificar claims que definan el rol o privilegio (ej. cambiar "role": "user" a "role": "admin") y verificar si el backend acepta el cambio. Buscar claims ocultos (ej. is_beta_tester: true) que puedan otorgar acceso a endpoints no documentados (Shadow Roles).
Ataques de Firma: Probar la debilidad alg: none o manipulación del header kid para ataques de inyección de clave.
3. Pruebas de Reuso, Replay y Persistencia (Alto Impacto)
La demostración de reuso eleva el riesgo del reporte.
Falta de Expiración: Intentar usar un token con el claim exp expirado o reusar un Access Token que debería haber caducado (persistencia).
Revocación Incompleta:
- e ser inmediata y total.
- Cerrar sesión y verificar si el Refresh Token aún funciona. La revocación debe ser inmediata y total.
Falta de Token Binding: Reutilizar un token robado después de un cambio de IP/Dispositivo/Navegador. Si funciona, el backend no valida el contexto de la sesión.
4. Ataques de Fuerza Bruta y Evasión de Rate Limiting
Rate Limiting Crítico: Probar Credential Stuffing o Brute Force contra endpoints de login, código MFA (códigos OTP) o recuperación de cuenta.
Evasión del Rate Limit: Demostrar la evasión mediante:
- Rotación de Headers (
X-Forwarded-Foro headers aleatorios) para simular múltiples IPs. - Rotación de Endpoints (Ej. Probar login en
/v1/authy luego en/v2/loginsi apuntan a la misma validación).
Enumeración de Usuarios (Error Diferenciado): Identificar si los mensajes de error de login son distintos (e.g., "Usuario no existe" vs. "Contraseña incorrecta"), lo que permite la enumeración de usuarios válidos para ataques dirigidos.
5. Bypassing de Autenticación Multifactor (MFA)
Bypassing por Cookie o Header: Intentar añadir headers o cookies de sesión que simulen haber completado el MFA, como mfa_passed: true, si la API confía en el cliente.
Endpoint Alternativo sin MFA: Verificar si existe un endpoint de login o de acción sensible que no requiera el segundo factor de autenticación.
6. Búsqueda de Fugas de Credenciales/Sesión
Buscar tokens o API keys en URLs (ej. ?token=...), logs del servidor o almacenamiento inseguro del cliente (localStorage, sessionStorage).
Revisar si las cookies de sesión carecen de flags críticos:
HttpOnly: (Evita el robo por XSS).Secure: (Solo se envía por HTTPS).SameSite: (Previene el envío en peticiones cross-site, mitigando CSRF).
Estructura del Reporte de Broken Authentication (Alto Impacto)
Un informe claro y conciso que demuestre la persistencia y la evasión maximiza la recompensa.
1. Título (Ejemplo: Máximo Impacto)
Critical: Broken Authentication (JWT alg:none) allows full Admin Session Takeover.
2. Componente y Endpoint Afectado
Componente: Módulo de Autenticación y Tokens Endpoint: POST /api/v1/auth/login (O el endpoint que acepta el token).
3. Pasos para Reproducir (Steps to Reproduce)
- Autenticarse como Usuario A (bajo privilegio) y obtener el Access Token.
- Decodificar el Access Token (usando JWT Inspector).
- Modificar el claim del rol a
"role": "admin". - Cambiar el header
alganoney eliminar la firma del token. - Ejecutar una petición a un endpoint de administrador con el token manipulado:
GET /api/v1/admin/users/list
Authorization: Bearer [TOKEN_MODIFICADO_SIN_FIRMA]Resultado: El servidor responde 200 OK con la lista de usuarios. El atacante ha escalado privilegios sin conocer credenciales.
4. Mitigación Sugerida (Causa Raíz)
- Validación Estricta de Tokens (JWT): Implementar la validación completa de la firma y de TODAS las claims críticas (
exp,iat,nbf,aud). - Lista Blanca de Roles y Scopes: El backend nunca debe confiar en los claims de privilegio del token. Debe consultar una lista blanca de roles permitidos y verificar que el token esté firmado con la clave correcta.
- Revocación Inmediata y Sincronizada: Revocar access y refresh tokens de forma inmediata al cerrar sesión en todos los dispositivos o al cambiar la contraseña.
- Defensa contra Automatización: Implementar Rate-Limiting efectivo y bloqueo progresivo en todos los endpoints de autenticación, con técnicas de mitigación de evasión (ej. análisis de patrones, fingerprinting).
- Mensajes de Error Uniformes: Utilizar mensajes de error genéricos en el login y MFA para prevenir la enumeración de usuarios.
Conéctate conmigo
¿Te fue útil esta información? Puedes encontrar más contenido en: