On Monday 13 September 2021 at 21:24 UTC, a UDP reflection (NTP) targeted a sports betting customer in the Benelux. The attack peaked at 139.5 Gbps and lasted 152 minutes. Traffic originated from 367 autonomous systems in 46 countries, predominantly residential proxy networks.
| Vector | UDP reflection (NTP) |
| Peak | 139.5 Gbps |
| Duration | 152 min |
| Time to mitigation | 0.186 s |
| Attack traffic reaching origin | 0.068% |
| Legitimate traffic challenged | 0.20% |
Timeline
The attack was preceded by a ransom note demanding payment in Monero. Edge packet filters identified the flood by source port and payload signature and dropped it at line rate across 14 points of presence.
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.
- Review allow-listed partner ranges quarterly.
- Keep origin IPs out of public DNS history.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Any plans to support per-tenant limits keyed on a JWT claim?
Machine-readable ranges are at /ips.json and via the API.
Clear and practical, thanks.
How do you avoid challenging uptime monitors and partners?
How do you avoid challenging uptime monitors and partners?
Machine-readable ranges are at /ips.json and via the API.
Solid runbook advice. The DNS-at-2am point hit home.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Solid runbook advice. The DNS-at-2am point hit home.
Interesting that most attacks are under ten minutes. Our experience is similar.