On Sunday 31 July 2022 at 11:06 UTC, a TLS handshake exhaustion targeted a airline booking customer in the Nordics. The attack peaked at 890.7 million requests per second and lasted 87 minutes. Traffic originated from 221 autonomous systems in 27 countries, predominantly hijacked home routers.
| Vector | TLS handshake exhaustion |
| Peak | 890.7 million requests per second |
| Duration | 87 min |
| Time to mitigation | 0.023 s |
| Attack traffic reaching origin | 0.076% |
| Legitimate traffic challenged | 0.09% |
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 566 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
A brief increase in p99 latency of 157 ms during the first minute, then normal service.
Recommendations
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Keep origin IPs out of public DNS history.
- Add a dedicated rate limit for the targeted route.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?
Nice to read a vendor blog that admits what went wrong.
Great to hear, thanks for sharing your experience.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Great write-up. We saw almost the same pattern on our login endpoint last month.
Would love a follow-up on how you handle HTTP/3 fingerprinting.
The billing model is what got our finance team on board, honestly.