On Wednesday 8 September 2021 at 01:38 UTC, a login endpoint flood targeted a airline booking customer in the UK. The attack peaked at 89.3 million requests per second and lasted 42 minutes. Traffic originated from 3133 autonomous systems in 52 countries, predominantly misconfigured open reflectors.
| Vector | login endpoint flood |
| Peak | 89.3 million requests per second |
| Duration | 42 min |
| Time to mitigation | 0.156 s |
| Attack traffic reaching origin | 0.000% |
| Legitimate traffic challenged | 0.47% |
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 144 within 30 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
A brief increase in p99 latency of 57 ms during the first minute, then normal service.
Recommendations
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Add a dedicated rate limit for the targeted route.
- Review allow-listed partner ranges quarterly.
Great write-up. We saw almost the same pattern on our login endpoint last month.
Machine-readable ranges are at /ips.json and via the API.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?
Good question. We will cover that in a follow-up post.
Solid runbook advice. The DNS-at-2am point hit home.
Clear and practical, thanks.
Solid runbook advice. The DNS-at-2am point hit home.
Thanks — sharing this with our on-call team.
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?
This matches what we see in iGaming around big matches.