Tema 9

9. A07: Identification and Authentication Failures

Toda aplicación necesita distinguir usuarios, verificar identidades y mantener sesiones seguras. Cuando estos mecanismos fallan, un atacante puede apropiarse de cuentas, suplantar identidades, abusar de credenciales robadas o persistir dentro del sistema con muy poco esfuerzo técnico adicional.

Objetivo Entender cómo se protege realmente la identidad
Enfoque Credenciales, sesiones, MFA y recuperación
Resultado Reconocer fallas que terminan en apropiación de cuentas

9.1 Introducción

La mayoría de las aplicaciones web dependen de saber quién es el usuario, qué privilegios tiene y cómo mantener su contexto entre múltiples solicitudes. Ese proceso involucra varias capas: identificación, autenticación, emisión o asociación de sesión, protección de credenciales y mecanismos de recuperación cuando algo sale mal.

Si alguna de esas capas es débil, un atacante puede iniciar sesión como otro usuario, secuestrar una sesión válida, abusar de credenciales robadas, automatizar intentos de acceso o tomar control de cuentas mediante flujos auxiliares como la recuperación de contraseña.

OWASP agrupa estos problemas bajo Identification and Authentication Failures porque la autenticación no es solo un formulario de login. Es un sistema completo de confianza que debe resistir errores humanos, abuso automatizado, robo de credenciales y decisiones de diseño débiles.

9.2 Identificación, autenticación y sesión

Aunque están relacionadas, estas tres nociones no son idénticas.

  • Identificación: el usuario declara quién dice ser, por ejemplo con un correo o nombre de usuario.
  • Autenticación: el sistema verifica esa identidad mediante factores como contraseña, token o segundo factor.
  • Sesión: el sistema mantiene el contexto autenticado entre solicitudes posteriores.

Un diseño seguro necesita que estas tres partes funcionen coordinadamente. No alcanza con verificar una contraseña si luego la sesión es predecible, persistente en exceso o fácilmente robable.

9.3 Qué significa una falla de autenticación

Existe una falla de autenticación cuando la aplicación permite que una identidad sea suplantada, asumida o verificada de forma insuficiente. Esto puede ocurrir por contraseñas débiles, validaciones inconsistentes, sesiones mal protegidas, flujos de recuperación inseguros o ausencia de controles frente a abuso automatizado.

Algunas manifestaciones típicas son:

  • Permitir fuerza bruta sin límites.
  • No invalidar sesiones al cambiar contraseña o cerrar sesión.
  • Exponer tokens o IDs de sesión en lugares inseguros.
  • Usar recuperación de cuenta fácil de abusar.
  • Permitir contraseñas triviales o reutilización sin controles.

9.4 La cuenta de usuario como activo de alto valor

Desde seguridad, una cuenta autenticada representa mucho más que un nombre de usuario. Puede dar acceso a datos personales, operaciones financieras, configuraciones críticas, trazabilidad histórica, recursos internos o canales de soporte privilegiados. Por eso la apropiación de cuentas es una de las metas más frecuentes de un atacante.

En muchos incidentes, el objetivo no es explotar el sistema completo, sino obtener una identidad válida con suficiente alcance para operar sin levantar sospechas.

9.5 Contraseñas débiles y políticas insuficientes

Una autenticación basada en contraseña depende en gran medida de la calidad de esa contraseña y de cómo la aplicación gestiona su uso. Políticas demasiado laxas, ausencia de verificación frente a credenciales comprometidas o falta de educación del usuario facilitan ataques de guessing, fuerza bruta o reutilización.

Problemas frecuentes:

  • Permitir contraseñas triviales o demasiado cortas.
  • No detectar contraseñas ampliamente conocidas o filtradas.
  • Forzar reglas complejas que empeoran usabilidad sin mejorar seguridad real.
  • No acompañar contraseñas con MFA en cuentas sensibles.

9.6 Fuerza bruta, credential stuffing y password spraying

No todos los intentos de acceso no autorizado son iguales. Comprender sus diferencias ayuda a diseñar defensas más adecuadas.

Técnica Descripción
Fuerza bruta Intentar múltiples contraseñas contra una misma cuenta
Credential stuffing Probar credenciales robadas de otros servicios
Password spraying Probar pocas contraseñas comunes sobre muchas cuentas

Estas técnicas son muy efectivas cuando no hay límites de intentos, MFA, monitoreo o detección de patrones anómalos.

9.7 Controles frente a automatización

Una autenticación segura no solo verifica credenciales; también debe resistir abuso automatizado. Si la aplicación acepta intentos ilimitados sin fricción ni control contextual, el atacante puede escalar rápidamente su capacidad.

Controles típicos:

  • Rate limiting por cuenta, IP o contexto.
  • Bloqueos temporales o progresivos.
  • Alertas ante actividad anómala.
  • Controles adaptativos según riesgo.
  • MFA en operaciones o cuentas críticas.
Un formulario de login sin protección contra automatización no es solo "básico". Es una puerta que invita al abuso masivo.

9.8 Enumeración de usuarios

La enumeración ocurre cuando la aplicación revela, de forma directa o indirecta, si un identificador de cuenta existe o no. A veces parece un detalle menor, pero facilita ataques dirigidos porque reduce incertidumbre del atacante.

Puede aparecer en:

  • Mensajes distintos en login.
  • Recuperación de contraseña.
  • Registro de nuevos usuarios.
  • Respuestas o tiempos observables diferentes.

La mitigación no siempre exige silencio total, pero sí consistencia suficiente para no convertir el sistema en un oráculo de existencia de cuentas.

9.9 Recuperación de cuenta: un punto crítico

Muchas aplicaciones endurecen el login principal pero descuidan los flujos de recuperación, que en la práctica representan una vía alternativa de autenticación. Si recuperar la cuenta es más fácil que iniciar sesión de forma legítima, el atacante tomará ese camino.

Problemas comunes:

  • Preguntas de seguridad basadas en información fácil de adivinar.
  • Tokens de recuperación débiles o persistentes en exceso.
  • Confirmaciones insuficientes para cambios críticos.
  • Canales de recuperación sin monitoreo ni límites.
  • Mensajes que revelan si una cuenta existe.

9.10 MFA: qué aporta y qué no resuelve por sí solo

La autenticación multifactor agrega una capa importante de seguridad porque exige algo más que la contraseña. Esto reduce impacto de credenciales reutilizadas o filtradas. Sin embargo, MFA no resuelve todos los problemas por sí sola.

Su efectividad depende de:

  • Qué factor adicional se usa.
  • Cómo se enrola y recupera ese factor.
  • Qué flujos quedan exentos.
  • Cómo se protege el proceso de sesión posterior.

Una cuenta con MFA pero con recuperación insegura o sesiones mal gestionadas sigue en riesgo.

9.11 Gestión de sesiones

Después de autenticar a un usuario, la aplicación necesita mantener su contexto. Ese contexto suele materializarse en una cookie de sesión, un token u otro identificador que el cliente reenvía en solicitudes posteriores.

Una sesión segura debería:

  • Usar identificadores impredecibles.
  • Expirar adecuadamente.
  • Invalidarse al cerrar sesión.
  • Invalidarse en eventos críticos como cambio de contraseña.
  • No exponerse en URL, logs o almacenamiento inseguro.

9.12 Secuestro y fijación de sesión

Si el atacante obtiene una sesión válida, puede actuar como el usuario sin necesidad de conocer su contraseña. Esa obtención puede provenir de robo, exposición o manipulación del identificador.

Dos conceptos importantes:

  • Session hijacking: el atacante roba o reutiliza una sesión legítima.
  • Session fixation: el atacante induce a la víctima a autenticarse con un identificador de sesión conocido por él.

Esto explica por qué la seguridad no termina cuando el login fue exitoso. La sesión posterior es parte central del problema.

9.13 Cookies de sesión y atributos de protección

Cuando la sesión se maneja con cookies, ciertos atributos ayudan a reducir exposición.

  • Secure: evita envío por HTTP plano.
  • HttpOnly: limita acceso desde JavaScript.
  • SameSite: ayuda a restringir ciertos contextos cross-site.
  • Max-Age o Expires: controla duración.

Estos atributos no sustituyen un buen diseño de sesión, pero forman parte de la higiene mínima esperable.

9.14 Logout e invalidación real

Un error habitual es implementar el cierre de sesión solo del lado cliente, borrando visualmente estado o eliminando una cookie, sin invalidar correctamente el contexto en el servidor. Esto puede dejar sesiones reutilizables o inconsistentes.

Del mismo modo, eventos relevantes como cambio de contraseña, cambio de correo principal o detección de acceso riesgoso deberían poder invalidar sesiones previas o exigir reautenticación según el caso.

9.15 Reautenticación en acciones sensibles

No todas las operaciones tienen el mismo riesgo. Algunas acciones justifican verificar nuevamente la identidad, aun dentro de una sesión ya autenticada.

Ejemplos típicos:

  • Cambio de contraseña.
  • Cambio de correo o factor de recuperación.
  • Operaciones financieras de alto impacto.
  • Alta o revocación de privilegios.
  • Acceso a datos especialmente sensibles.

La ausencia de este control no siempre genera una explotación automática, pero sí aumenta significativamente el riesgo si una sesión fue robada o abusada.

9.16 Flujos de registro y verificación inicial

La seguridad de identidad empieza incluso antes del primer login. El proceso de registro define cómo se crea una cuenta, qué datos se consideran confiables y qué pruebas de control sobre esa identidad se exigen.

Problemas que pueden aparecer:

  • Registro automatizable sin límites.
  • Correos no verificados tratados como si fueran definitivos.
  • Asignación de roles o estados inseguros en el alta.
  • Falta de separación entre cuenta creada y cuenta realmente validada.

9.17 Persistencia excesiva de sesiones

Una sesión que dura demasiado amplía la ventana de oportunidad para abuso. Esto es especialmente delicado en dispositivos compartidos, sesiones olvidadas abiertas o contextos donde el identificador pudo ser interceptado o almacenado indebidamente.

La duración adecuada depende del tipo de aplicación, del nivel de riesgo y del contexto de uso. No existe un valor universal, pero sí una regla general: la persistencia debe ser proporcional al impacto de la cuenta y a la sensibilidad de las acciones permitidas.

9.18 Ejemplos típicos de esta categoría

  • Login sin límites de intentos.
  • Sesiones que no se invalidan al cerrar sesión o cambiar contraseña.
  • Recuperación de cuenta basada en preguntas débiles.
  • Cookies de sesión sin atributos de seguridad.
  • Enumeración de usuarios en mensajes de login.
  • Autenticación sin MFA en cuentas de alto riesgo.
  • Tokens expuestos en URL o logs.

9.19 Impacto de estas fallas

Las fallas de identificación y autenticación pueden llevar directamente a compromiso de cuentas, y desde allí a problemas mucho más amplios.

Falla Impacto posible
Login débil o sin controles Toma masiva de cuentas
Recuperación insegura Secuestro de identidad sin conocer la contraseña
Sesión robable o persistente Suplantación del usuario autenticado
MFA ausente en cuentas críticas Mayor exposición ante credenciales filtradas
Reautenticación ausente Cambios sensibles ejecutados con sesión comprometida

9.20 Señales que justifican una revisión profunda

  • Respuestas diferentes para usuario inexistente y contraseña incorrecta.
  • Ausencia total de controles ante múltiples intentos fallidos.
  • Sesiones válidas incluso después de eventos críticos.
  • Flujos de recuperación demasiado simples o predecibles.
  • Cookies sin Secure o HttpOnly.
  • Falta de MFA en administradores o cuentas con alto impacto.
  • Posibilidad de permanecer autenticado indefinidamente sin evaluación de riesgo.

9.21 Buenas prácticas de prevención

La prevención de esta categoría combina diseño, controles técnicos y operación continua.

  • Usar políticas de autenticación adecuadas al riesgo.
  • Aplicar MFA donde el impacto lo justifique.
  • Proteger login y recuperación frente a automatización.
  • Diseñar sesiones con expiración e invalidación correctas.
  • Reautenticar en acciones críticas.
  • Evitar exponer tokens o IDs de sesión en lugares inseguros.
  • Monitorear eventos de autenticación anómalos y actividad sospechosa.

9.22 El rol del monitoreo

La autenticación segura no termina en el diseño del formulario o la cookie. También exige observabilidad. El monitoreo ayuda a detectar fuerza bruta, credential stuffing, recuperaciones anómalas, accesos desde contextos inusuales o comportamientos incompatibles con el uso normal de la cuenta.

Sin monitoreo, muchas apropiaciones de cuenta pueden pasar desapercibidas durante largos períodos.

9.23 Errores frecuentes en la remediación

  • Agregar MFA pero mantener recuperación de cuenta insegura.
  • Implementar logout visual sin invalidación real del lado servidor.
  • Bloquear fuerza bruta en un punto pero no en APIs equivalentes.
  • Asumir que una contraseña fuerte resuelve apropiación de cuenta.
  • No revisar persistencia de sesión ni eventos críticos.
  • Ignorar riesgos de enumeración de usuarios.
La autenticación es un sistema, no un formulario. Si se endurece una parte y se dejan débiles las demás, la cuenta seguirá siendo apropiable por otro camino.

9.24 Relación con otras vulnerabilidades

Las fallas de autenticación interactúan con varias categorías del curso.

  • Con Broken Access Control, si una cuenta comprometida obtiene acceso a recursos ajenos o privilegiados.
  • Con Cryptographic Failures, si credenciales o sesiones quedan mal protegidas.
  • Con Logging Failures, si no se detectan intentos masivos o secuestros de sesión.
  • Con Insecure Design, si acciones sensibles no requieren controles proporcionales.

Esto explica por qué la autenticación suele ser una de las capas más críticas de cualquier sistema.

9.25 Qué debes recordar de este tema

  • Identificación, autenticación y sesión son conceptos distintos pero inseparables en la práctica.
  • La apropiación de cuentas puede ocurrir por login débil, recuperación insegura o mala gestión de sesión.
  • Credential stuffing y fuerza bruta son amenazas reales y automatizables.
  • MFA ayuda mucho, pero no sustituye un buen diseño completo del sistema de identidad.
  • Las sesiones deben expirar, invalidarse y protegerse como activos sensibles.
  • Las acciones críticas justifican reautenticación o verificación reforzada.
  • La seguridad de autenticación requiere monitoreo continuo, no solo validación inicial.

9.26 Conclusión

Identification and Authentication Failures muestran que la identidad digital de un usuario puede ser tan valiosa como cualquier dato sensible de la aplicación. Si el sistema no protege bien cómo se inicia sesión, cómo se mantiene la sesión y cómo se recupera una cuenta, un atacante no necesita vulnerar toda la infraestructura: le basta con convertirse en un usuario válido.

En el próximo tema estudiaremos A08: Software and Data Integrity Failures, donde veremos qué ocurre cuando la aplicación confía ciegamente en actualizaciones, datos, integraciones o artefactos cuya integridad no fue adecuadamente validada.