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.
// 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);
}// 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
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Sin Política de Contraseñas
mediumAceptar cualquier contraseña — incluyendo '123' o 'a' — hace las cuentas de usuarios trivialmente vulnerables a credential stuffing y ataques de fuerza bruta.
Sin Rate Limit en Login
mediumUn endpoint de login sin rate limiting puede ser forzado por fuerza bruta miles de veces por segundo hasta encontrar una contraseña válida.
Sin MFA/2FA
lowSin autenticación multifactor, una contraseña robada o adivinada es todo lo que se necesita para comprometer completamente una cuenta.
Reset de Contraseña Sin Expiración
mediumLos links de reset de contraseña que nunca expiran permanecen válidos indefinidamente — un email antiguo en una brecha le da a los atacantes una ruta permanente para tomar control de la cuenta.