On Monday 4 December 2023 at 22:43 UTC, a search endpoint flood targeted a online casino customer in the Middle East. The attack peaked at 239.1 million requests per second and lasted 155 minutes. Traffic originated from 3664 autonomous systems in 80 countries, predominantly residential proxy networks.
| Vector | search endpoint flood |
| Peak | 239.1 million requests per second |
| Duration | 155 min |
| Time to mitigation | 0.753 s |
| Attack traffic reaching origin | 0.078% |
| Legitimate traffic challenged | 0.09% |
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 138 within 5 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
- Enable log streaming to your SIEM for faster correlation.
- Add a dedicated rate limit for the targeted route.
- Keep origin IPs out of public DNS history.
This matches what we see in iGaming around big matches.
Do you publish the edge IP ranges in a machine-readable format?
We moved from a scrubbing provider to always-on last year; time to mitigation went from minutes to basically nothing.
Good question. We will cover that in a follow-up post.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?
Thanks — sharing this with our on-call team.
Great to hear, thanks for sharing your experience.
Would love a follow-up on how you handle HTTP/3 fingerprinting.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Good question. We will cover that in a follow-up post.
How do you avoid challenging uptime monitors and partners?
Solid runbook advice. The DNS-at-2am point hit home.