Sin Bloqueo de Cuenta / Protección contra Fuerza Bruta
Endpoints de login sin rate limiting ni mecanismo de bloqueo, permitiendo a atacantes probar combinaciones ilimitadas de usuario y contraseña hasta encontrar credenciales válidas.
Cómo Funciona
Un ataque de fuerza bruta prueba miles de contraseñas por segundo. Sin rate limiting, un atacante puede probar la lista completa de RockYou (14 millones de contraseñas) contra tu endpoint de login en minutos. El credential stuffing — probar pares usuario/contraseña de otros breaches — es igualmente efectivo y automatizado.
// MAL: login sin rate limiting
export async function POST(req: Request) {
const { email, password } = await req.json();
const user = await db.users.findByEmail(email);
if (!user || !bcrypt.compare(password, user.passwordHash)) {
return Response.json({ error: 'Credenciales inválidas' }, { status: 401 });
}
return Response.json({ token: generateToken(user) });
}// BIEN: limita los intentos de login
import { Ratelimit } from '@upstash/ratelimit';
const ratelimit = new Ratelimit({ limiter: Ratelimit.slidingWindow(5, '15m') });
export async function POST(req: Request) {
const ip = req.headers.get('x-forwarded-for') ?? 'anonymous';
const { success } = await ratelimit.limit(ip);
if (!success) return Response.json({ error: 'Demasiados intentos' }, { status: 429 });
// ... resto de la lógica de login
}Ejemplo Real
El ataque de credential stuffing de LinkedIn en 2016 usó 117 millones de credenciales filtradas para intentar login en otros servicios. Las apps sin rate limiting vieron acceso no autorizado masivo. Herramientas automatizadas como Sentry MBA hacen esto trivialmente fácil.
Cómo Prevenirlo
- Implementa rate limiting en endpoints de login — 5 intentos por 15 minutos por IP es una línea base común
- Agrega retrasos progresivos después de intentos fallidos (backoff exponencial)
- Considera CAPTCHA después de 3+ intentos fallidos para el mismo email
- Usa Upstash Rate Limit, express-rate-limit o la protección integrada de tu API gateway
- Alerta sobre patrones de login inusuales (muchos fallos, logins desde países nuevos)
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Fijación de Sesión
highEl servidor reutiliza el mismo ID de sesión antes y después del login, permitiendo a un atacante que plantó un ID de sesión conocido secuestrar la sesión autenticada.
Política de Contraseña Débil
mediumSin requisitos de longitud mínima, complejidad o verificación contra contraseñas comunes en el registro o cambio de contraseña, haciendo las cuentas fácilmente vulnerables a fuerza bruta.
OAuth Sin Parámetro State
highFlujo de autorización OAuth implementado sin un parámetro `state` aleatorio, permitiendo ataques CSRF que vinculan la cuenta de una víctima con la identidad OAuth del atacante.
Token No Invalidado al Hacer Logout
mediumTokens JWT o de sesión que siguen siendo válidos después de que un usuario hace logout porque no hay mecanismo de revocación server-side, permitiendo que tokens robados se usen indefinidamente.