El credential stuffing usa pares de usuario y contraseña de otros servicios contra el tuyo, apostando por la reutilización. La consecuencia de seguridad es el robo de cuentas. La operativa llega antes: un endpoint de login es una de las rutas más caras de cualquier aplicación, y los atacantes lo piden miles de veces por minuto.
Por qué los endpoints de login son caros
Un login bien construido hace trabajo lento a propósito. El hashing de contraseñas está diseñado para costar un tiempo medible — eso es lo que dificulta descifrar hashes robados. Añade una consulta a la base de datos, una escritura de sesión y una entrada de auditoría, y un solo intento puede costar más que servir una página cacheada entera. Un atacante reproduciendo una lista filtrada ejecuta, sin pretenderlo, un ataque de agotamiento de recursos.
Orden de operaciones
El límite de tasa debe ejecutarse antes de la verificación de la contraseña. Si se comprueba después del hashing, el trabajo caro ya se ha hecho y el limitador protege tus cuentas sin hacer nada por tu servidor.
Defensa por capas
- Dos cubos de límite de tasa: uno por dirección de origen y otro por nombre de cuenta. El primero pilla a un cliente ruidoso, el segundo a una botnet machacando un solo buzón.
- Un desafío de navegador delante del formulario durante un ataque, para que los clientes que no ejecutan JavaScript nunca lleguen al handler.
- Segundos factores, que convierten una contraseña correcta en un login incompleto.
- Comprobación de contraseñas filtradas al registrarse y al cambiarlas, para que las credenciales reutilizadas nunca lleguen a ser válidas.
- Respuestas y tiempos consistentes, para que el formulario no revele qué nombres de usuario existen.
No bloquees la cuenta
Bloquear una cuenta tras unos pocos fallos suena protector y le da al atacante una herramienta de denegación de servicio: cualquiera puede bloquear a cualquier usuario fallando a propósito. Limitar el intento (throttling) es una primitiva mejor — ralentiza al atacante sin dejar que deje offline a un usuario legítimo.
Vigila la señal correcta
El total de intentos de login es ruidoso. El número que delata el credential stuffing es la tasa de fallo: las poblaciones normales fallan una minoría de las veces, y una campaña de stuffing falla casi siempre. Un salto repentino de una tasa de fallo baja a una muy alta, con el volumen subiendo a la vez, es la señal de alerta temprana más clara que tendrás.