On Monday 13 December 2021 at 00:42 UTC, a credential stuffing targeted a retail banking customer in the Benelux. The attack peaked at 465.5 million requests per second and lasted 163 minutes. Traffic originated from 2279 autonomous systems in 50 countries, predominantly a rented booter service.
| Vector | credential stuffing |
| Peak | 465.5 million requests per second |
| Duration | 163 min |
| Time to mitigation | 0.796 s |
| Attack traffic reaching origin | 0.009% |
| Legitimate traffic challenged | 0.44% |
Timeline
The attack was preceded by a competitor’s product launch. Request rates on the targeted routes exceeded their hourly baseline by a factor of 522 within 29 seconds. The risk score of participating clients crossed the challenge threshold automatically and proof-of-work difficulty rose with origin load.
What the customer saw
Checkout conversion was unchanged compared with the same hour of the previous week.
Recommendations
- Enable authenticated origin pulls.
- Enable log streaming to your SIEM for faster correlation.
- Add a dedicated rate limit for the targeted route.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Clear and practical, thanks.
Nice to read a vendor blog that admits what went wrong.
Solid runbook advice. The DNS-at-2am point hit home.
We moved from a scrubbing provider to always-on last year; time to mitigation went from minutes to basically nothing.
Solid runbook advice. The DNS-at-2am point hit home.
Could you share the dataset behind the percentages?