highCWE-287A07:2021

Fallos de Autenticación

Mecanismos de autenticación débiles permiten a atacantes comprometer passwords, keys o tokens de sesión — JWT sin expiración, tokens en localStorage o sin MFA.

Cómo Funciona

Los fallos de autenticación incluyen debilidades en cómo los usuarios prueban su identidad. Problemas comunes incluyen JWTs que nunca expiran, guardar tokens en localStorage (accesible via XSS), no implementar lockout de cuenta después de intentos fallidos, políticas de password débiles y falta de autenticación multi-factor. Los atacantes explotan esto con credential stuffing, brute force o robo de tokens via XSS.

Código Vulnerable
const token = jwt.sign(
  { userId: user.id, role: user.role },
  SECRET
);
localStorage.setItem('token', token);
Código Seguro
const token = jwt.sign(
  { userId: user.id, role: user.role },
  SECRET,
  { expiresIn: '1h' }
);
res.cookie('token', token, {
  httpOnly: true, secure: true, sameSite: 'strict'
});

Ejemplo Real

La brecha de LinkedIn en 2012 expuso 6.5 millones de hashes de passwords. Los passwords estaban hasheados con SHA1 sin salt, permitiendo a los atacantes crackear la mayoría. Después se descubrió que realmente 117 millones de cuentas fueron comprometidas.

Cómo Prevenirlo

  • Configura expiración en tokens JWT (1h access, 7d refresh)
  • Guarda tokens en cookies httpOnly, nunca en localStorage
  • Implementa lockout de cuenta después de intentos fallidos
  • Requiere MFA para operaciones sensibles

Tecnologías Afectadas

Node.jsReactNext.jsPythonGoJavaPHPC#

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas