On Sunday 28 March 2021 at 15:27 UTC, a WebSocket connection flood targeted a ticketing customer in the Benelux. The attack peaked at 610.6 million requests per second and lasted 42 minutes. Traffic originated from 1153 autonomous systems in 6 countries, predominantly mobile carrier ranges.
| Vector | WebSocket connection flood |
| Peak | 610.6 million requests per second |
| Duration | 42 min |
| Time to mitigation | 0.835 s |
| Attack traffic reaching origin | 0.028% |
| Legitimate traffic challenged | 0.75% |
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 837 within 10 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 171 ms during the first minute, then normal service.
Recommendations
- Enable authenticated origin pulls.
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Keep origin IPs out of public DNS history.
Carpet bombing is nasty. Good to see a clear explanation of it.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?