On Friday 5 April 2024 at 15:25 UTC, a cache-busting query flood targeted a airline booking customer in Latin America. The attack peaked at 682.7 million requests per second and lasted 80 minutes. Traffic originated from 2666 autonomous systems in 58 countries, predominantly a Mirai-derived IoT botnet.
| Vector | cache-busting query flood |
| Peak | 682.7 million requests per second |
| Duration | 80 min |
| Time to mitigation | 0.489 s |
| Attack traffic reaching origin | 0.085% |
| Legitimate traffic challenged | 0.39% |
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 651 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
The customer’s status page stayed green throughout; they learned about the attack from our notification.
Recommendations
- Add a dedicated rate limit for the targeted route.
- Enable log streaming to your SIEM for faster correlation.
- Review allow-listed partner ranges quarterly.
We moved from a scrubbing provider to always-on last year; time to mitigation went from minutes to basically nothing.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Thanks — sharing this with our on-call team.
Clear and practical, thanks.
Machine-readable ranges are at /ips.json and via the API.
This matches what we see in iGaming around big matches.
This matches what we see in iGaming around big matches.
Do you publish the edge IP ranges in a machine-readable format?
Carpet bombing is nasty. Good to see a clear explanation of it.
The point about origin IPs leaking through certificate transparency logs is underrated.
Good question. We will cover that in a follow-up post.