On Monday 21 November 2022 at 10:01 UTC, a TLS handshake exhaustion targeted a online casino customer in the Benelux. The attack peaked at 945.8 million requests per second and lasted 117 minutes. Traffic originated from 1055 autonomous systems in 56 countries, predominantly mobile carrier ranges.
| Vector | TLS handshake exhaustion |
| Peak | 945.8 million requests per second |
| Duration | 117 min |
| Time to mitigation | 0.616 s |
| Attack traffic reaching origin | 0.046% |
| Legitimate traffic challenged | 0.06% |
Timeline
The attack was preceded by a publicly announced sales event. Request rates on the targeted routes exceeded their hourly baseline by a factor of 764 within 33 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
- Add a dedicated rate limit for the targeted route.
- Enable log streaming to your SIEM for faster correlation.
- Review allow-listed partner ranges quarterly.
The point about origin IPs leaking through certificate transparency logs is underrated.
Nice to read a vendor blog that admits what went wrong.
Our auditors asked for exactly this kind of incident evidence under DORA.
Any plans to support per-tenant limits keyed on a JWT claim?
How do you avoid challenging uptime monitors and partners?
Is the risk score exposed in the logs so we can build our own dashboards on it?