On Friday 22 August 2025 at 11:17 UTC, a cache-busting query flood targeted a developer platform customer in Latin America. The attack peaked at 727.5 million requests per second and lasted 132 minutes. Traffic originated from 77 autonomous systems in 14 countries, predominantly residential proxy networks.
| Vector | cache-busting query flood |
| Peak | 727.5 million requests per second |
| Duration | 132 min |
| Time to mitigation | 0.146 s |
| Attack traffic reaching origin | 0.056% |
| Legitimate traffic challenged | 0.55% |
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 145 within 37 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
- Review allow-listed partner ranges quarterly.
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Enable authenticated origin pulls.
The point about origin IPs leaking through certificate transparency logs is underrated.
Is the risk score exposed in the logs so we can build our own dashboards on it?
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
The point about origin IPs leaking through certificate transparency logs is underrated.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Machine-readable ranges are at /ips.json and via the API.
Clear and practical, thanks.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.