mediumCWE-307A07:2021

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.

Código Vulnerable
// 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) });
}
Código Seguro
// 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

nodejsNext.jsPythonPHP

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas