On Friday 28 April 2023 at 21:14 UTC, a HTTP GET flood targeted a video streaming customer in Western Europe. The attack peaked at 895.6 million requests per second and lasted 120 minutes. Traffic originated from 235 autonomous systems in 40 countries, predominantly a rented booter service.
| Vector | HTTP GET flood |
| Peak | 895.6 million requests per second |
| Duration | 120 min |
| Time to mitigation | 0.778 s |
| Attack traffic reaching origin | 0.000% |
| Legitimate traffic challenged | 0.75% |
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 103 within 36 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 204 ms during the first minute, then normal service.
Recommendations
- Keep origin IPs out of public DNS history.
- Review allow-listed partner ranges quarterly.
- Add a dedicated rate limit for the targeted route.
Do you publish the edge IP ranges in a machine-readable format?
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?
Would love a follow-up on how you handle HTTP/3 fingerprinting.
The billing model is what got our finance team on board, honestly.
Thanks! Yes — the risk score and its components are included in every log record.
Thanks — sharing this with our on-call team.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Great to hear, thanks for sharing your experience.