mediumCWE-358A07:2021

Sin Verificación de Email

Permitir cuentas con email no verificado deja que atacantes se registren con la dirección de email de otra persona, potencialmente bloqueándolos o suplantándolos.

Cómo Funciona

Sin verificación de email, cualquiera puede registrarse con admin@empresa.com o usuario@competidor.com. Esto habilita el pre-hijacking de cuentas (registrarse antes de que lo haga el dueño real), spam desde tu plataforma y abuso de los límites del tier gratuito con direcciones desechables.

Código Vulnerable
// MAL: cuenta creada e inmediatamente usable sin verificación de email
async function registrar(email: string, password: string) {
  const user = await createUser({ email, password, verified: true }); // sin verificación
  return createSession(user);
}
Código Seguro
// BIEN: envía email de verificación y requiere confirmación antes del acceso completo
async function registrar(email: string, password: string) {
  const user = await createUser({ email, password, verified: false });
  const token = generateVerificationToken();
  await saveVerificationToken(user.id, token);
  await sendVerificationEmail(email, token);
  return { message: 'Revisa tu email para verificar tu cuenta' };
}

Ejemplo Real

Los ataques de pre-hijacking de cuentas fueron documentados en un paper académico de 2022 que encontró 75 sitios web populares (incluyendo LinkedIn e Instagram) vulnerables a registrarse con el email de otro usuario antes de que se registrara, tomando luego control cuando la víctima se registra via OAuth.

Cómo Prevenirlo

  • Requiere verificación de email antes de otorgar acceso completo a la cuenta
  • Usa tokens de verificación de un solo uso con tiempo limitado (expiran después de 24 horas)
  • Limita lo que las cuentas no verificadas pueden hacer — acceso de solo lectura o sin acceso a la API
  • Implementa el token de verificación con un valor criptográficamente aleatorio (32+ bytes)

Tecnologías Afectadas

Node.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas