On Tuesday 4 February 2025 at 17:53 UTC, a TLS handshake exhaustion targeted a healthcare portal customer in Latin America. The attack peaked at 425.0 million requests per second and lasted 4 minutes. Traffic originated from 2692 autonomous systems in 51 countries, predominantly mobile carrier ranges.
| Vector | TLS handshake exhaustion |
| Peak | 425.0 million requests per second |
| Duration | 4 min |
| Time to mitigation | 0.670 s |
| Attack traffic reaching origin | 0.024% |
| Legitimate traffic challenged | 0.04% |
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 873 within 36 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
- Enable authenticated origin pulls.
- Review allow-listed partner ranges quarterly.
- Lower challenge thresholds on authentication endpoints during high-risk events.
Any plans to support per-tenant limits keyed on a JWT claim?
Verified good bots and allow-listed partners bypass challenges entirely.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?
Machine-readable ranges are at /ips.json and via the API.
Any plans to support per-tenant limits keyed on a JWT claim?
Great to hear, thanks for sharing your experience.