On Saturday 1 May 2021 at 14:43 UTC, a HTTP GET flood targeted a healthcare portal customer in the Middle East. The attack peaked at 523.2 million requests per second and lasted 11 minutes. Traffic originated from 2775 autonomous systems in 105 countries, predominantly a Mirai-derived IoT botnet.
| Vector | HTTP GET flood |
| Peak | 523.2 million requests per second |
| Duration | 11 min |
| Time to mitigation | 0.221 s |
| Attack traffic reaching origin | 0.049% |
| Legitimate traffic challenged | 0.65% |
Timeline
The attack was preceded by no stated motive. Request rates on the targeted routes exceeded their hourly baseline by a factor of 245 within 33 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
Checkout conversion was unchanged compared with the same hour of the previous week.
Recommendations
- Add a dedicated rate limit for the targeted route.
- Keep origin IPs out of public DNS history.
- Enable authenticated origin pulls.
Interesting that most attacks are under ten minutes. Our experience is similar.
Great write-up. We saw almost the same pattern on our login endpoint last month.
How do you avoid challenging uptime monitors and partners?
Machine-readable ranges are at /ips.json and via the API.