On Monday 18 August 2025 at 11:46 UTC, a HTTP GET flood targeted a video streaming customer in Iberia. The attack peaked at 593.5 million requests per second and lasted 38 minutes. Traffic originated from 268 autonomous systems in 66 countries, predominantly a Mirai-derived IoT botnet.
| Vector | HTTP GET flood |
| Peak | 593.5 million requests per second |
| Duration | 38 min |
| Time to mitigation | 0.075 s |
| Attack traffic reaching origin | 0.009% |
| Legitimate traffic challenged | 0.48% |
Timeline
The attack was preceded by a ransom note demanding payment in Monero. Request rates on the targeted routes exceeded their hourly baseline by a factor of 206 within 34 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 32 ms during the first minute, then normal service.
Recommendations
- Keep origin IPs out of public DNS history.
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Enable authenticated origin pulls.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Interesting that most attacks are under ten minutes. Our experience is similar.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Our auditors asked for exactly this kind of incident evidence under DORA.
Machine-readable ranges are at /ips.json and via the API.
Do you publish the edge IP ranges in a machine-readable format?
Solid runbook advice. The DNS-at-2am point hit home.
Our auditors asked for exactly this kind of incident evidence under DORA.