One Control This Quarter

A consumer app is losing accounts to credential stuffing: roughly 400,000 login attempts per day spread over 40,000 residential proxy addresses, about 0.4% of them succeeding. Product has ruled out mandatory multi-factor authentication this year on conversion grounds. Engineering can ship exactly one control this quarter. Which is the strongest choice, and why?

A

Lock an account after five consecutive failed attempts and email the owner. That caps how many guesses any single account can absorb, which is the quantity the attacker needs.

B

Screen every new and changed password against a breached-credential corpus and refuse matches. Stuffing runs entirely on credentials already exposed in someone else's breach, so removing those from your user base removes the attack's input rather than raising its cost.

C

Put a CAPTCHA on the login form. It is the only control that separates a human from a script, it needs no change to the product, and it applies to every attempt regardless of source.

D

Rate limit the login endpoint to ten attempts per minute per source address. Throughput per address is what makes an attack of this size economical.