On Tuesday 15 April 2025 at 17:19 UTC, a TLS handshake exhaustion targeted a ticketing customer in the Benelux. The attack peaked at 524.6 million requests per second and lasted 110 minutes. Traffic originated from 3503 autonomous systems in 93 countries, predominantly a rented booter service.
| Vector | TLS handshake exhaustion |
| Peak | 524.6 million requests per second |
| Duration | 110 min |
| Time to mitigation | 0.907 s |
| Attack traffic reaching origin | 0.001% |
| Legitimate traffic challenged | 0.72% |
Timeline
The attack was preceded by an extortion email received two days earlier. Request rates on the targeted routes exceeded their hourly baseline by a factor of 87 within 28 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
- Add a dedicated rate limit for the targeted route.
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Review allow-listed partner ranges quarterly.
Do you publish the edge IP ranges in a machine-readable format?
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.
How do you avoid challenging uptime monitors and partners?
Any plans to support per-tenant limits keyed on a JWT claim?
Solid runbook advice. The DNS-at-2am point hit home.
Great write-up. We saw almost the same pattern on our login endpoint last month.
Thanks! Yes — the risk score and its components are included in every log record.
The billing model is what got our finance team on board, honestly.
Great to hear, thanks for sharing your experience.