On Tuesday 19 October 2021 at 08:32 UTC, a credential stuffing targeted a healthcare portal customer in Central Europe. The attack peaked at 254.0 million requests per second and lasted 114 minutes. Traffic originated from 2674 autonomous systems in 61 countries, predominantly a Mirai-derived IoT botnet.
| Vector | credential stuffing |
| Peak | 254.0 million requests per second |
| Duration | 114 min |
| Time to mitigation | 0.284 s |
| Attack traffic reaching origin | 0.071% |
| Legitimate traffic challenged | 0.26% |
Timeline
The attack was preceded by an extortion email received two days earlier. Request rates on the targeted routes exceeded their hourly baseline by a factor of 91 within 32 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
No customer-visible impact. The on-call engineer was notified and acknowledged the incident from the dashboard.
Recommendations
- Add a dedicated rate limit for the targeted route.
- Enable log streaming to your SIEM for faster correlation.
- Lower challenge thresholds on authentication endpoints during high-risk events.
Thanks — sharing this with our on-call team.
Interesting that most attacks are under ten minutes. Our experience is similar.
How do you avoid challenging uptime monitors and partners?
We moved from a scrubbing provider to always-on last year; time to mitigation went from minutes to basically nothing.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Interesting that most attacks are under ten minutes. Our experience is similar.
Interesting that most attacks are under ten minutes. Our experience is similar.