On Tuesday 21 July 2026 at 07:53 UTC, a HTTP GET flood targeted a municipal services customer in Iberia. The attack peaked at 635.9 million requests per second and lasted 64 minutes. Traffic originated from 1921 autonomous systems in 30 countries, predominantly mobile carrier ranges.
| Vector | HTTP GET flood |
| Peak | 635.9 million requests per second |
| Duration | 64 min |
| Time to mitigation | 0.823 s |
| Attack traffic reaching origin | 0.067% |
| Legitimate traffic challenged | 0.22% |
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 447 within 32 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
- Review allow-listed partner ranges quarterly.
- Enable authenticated origin pulls.
- Keep origin IPs out of public DNS history.
The point about origin IPs leaking through certificate transparency logs is underrated.
Would love a follow-up on how you handle HTTP/3 fingerprinting.
Machine-readable ranges are at /ips.json and via the API.
Do you publish the edge IP ranges in a machine-readable format?
Great write-up. We saw almost the same pattern on our login endpoint last month.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
How do you avoid challenging uptime monitors and partners?