On Monday 15 November 2021 at 11:17 UTC, a WebSocket connection flood targeted a online casino customer in Western Europe. The attack peaked at 480.0 million requests per second and lasted 179 minutes. Traffic originated from 3996 autonomous systems in 44 countries, predominantly mobile carrier ranges.
| Vector | WebSocket connection flood |
| Peak | 480.0 million requests per second |
| Duration | 179 min |
| Time to mitigation | 0.533 s |
| Attack traffic reaching origin | 0.043% |
| Legitimate traffic challenged | 0.32% |
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 878 within 34 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
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Enable authenticated origin pulls.
- Enable log streaming to your SIEM for faster correlation.
Interesting that most attacks are under ten minutes. Our experience is similar.
Thanks — sharing this with our on-call team.
Great to hear, thanks for sharing your experience.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
How do you avoid challenging uptime monitors and partners?
Would love a follow-up on how you handle HTTP/3 fingerprinting.
Any plans to support per-tenant limits keyed on a JWT claim?
Good question. We will cover that in a follow-up post.