On Wednesday 21 April 2021 at 15:47 UTC, a credential stuffing targeted a B2B SaaS customer in the Benelux. The attack peaked at 264.1 million requests per second and lasted 72 minutes. Traffic originated from 147 autonomous systems in 113 countries, predominantly mobile carrier ranges.
| Vector | credential stuffing |
| Peak | 264.1 million requests per second |
| Duration | 72 min |
| Time to mitigation | 0.629 s |
| Attack traffic reaching origin | 0.052% |
| Legitimate traffic challenged | 0.80% |
Timeline
The attack was preceded by a hacktivist channel announcing the target. Request rates on the targeted routes exceeded their hourly baseline by a factor of 878 within 7 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
The customer’s status page stayed green throughout; they learned about the attack from our notification.
Recommendations
- Keep origin IPs out of public DNS history.
- Enable log streaming to your SIEM for faster correlation.
- Enable authenticated origin pulls.
Great write-up. We saw almost the same pattern on our login endpoint last month.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Great write-up. We saw almost the same pattern on our login endpoint last month.
Do you publish the edge IP ranges in a machine-readable format?
Is the risk score exposed in the logs so we can build our own dashboards on it?
Is the risk score exposed in the logs so we can build our own dashboards on it?
Clear and practical, thanks.
We moved from a scrubbing provider to always-on last year; time to mitigation went from minutes to basically nothing.