On Sunday 13 March 2022 at 10:48 UTC, a WebSocket connection flood targeted a education platform customer in Central Europe. The attack peaked at 682.8 million requests per second and lasted 119 minutes. Traffic originated from 986 autonomous systems in 17 countries, predominantly misconfigured open reflectors.
| Vector | WebSocket connection flood |
| Peak | 682.8 million requests per second |
| Duration | 119 min |
| Time to mitigation | 0.082 s |
| Attack traffic reaching origin | 0.090% |
| Legitimate traffic challenged | 0.65% |
Timeline
The attack was preceded by a ransom note demanding payment in Monero. Request rates on the targeted routes exceeded their hourly baseline by a factor of 99 within 22 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
Checkout conversion was unchanged compared with the same hour of the previous week.
Recommendations
- Enable authenticated origin pulls.
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Review allow-listed partner ranges quarterly.
Clear and practical, thanks.
Thanks — sharing this with our on-call team.
We moved from a scrubbing provider to always-on last year; time to mitigation went from minutes to basically nothing.
Could you share the dataset behind the percentages?
How do you avoid challenging uptime monitors and partners?
Thanks! Yes — the risk score and its components are included in every log record.
Is the risk score exposed in the logs so we can build our own dashboards on it?