On Wednesday 8 November 2023 at 11:32 UTC, a WebSocket connection flood targeted a municipal services customer in Southeast Asia. The attack peaked at 23.5 million requests per second and lasted 12 minutes. Traffic originated from 636 autonomous systems in 38 countries, predominantly mobile carrier ranges.
| Vector | WebSocket connection flood |
| Peak | 23.5 million requests per second |
| Duration | 12 min |
| Time to mitigation | 0.692 s |
| Attack traffic reaching origin | 0.082% |
| Legitimate traffic challenged | 0.61% |
Timeline
The attack was preceded by a competitor’s product launch. Request rates on the targeted routes exceeded their hourly baseline by a factor of 202 within 27 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.
- Review allow-listed partner ranges quarterly.
- Add a dedicated rate limit for the targeted route.
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?
Our auditors asked for exactly this kind of incident evidence under DORA.
Our auditors asked for exactly this kind of incident evidence under DORA.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Verified good bots and allow-listed partners bypass challenges entirely.
Great write-up. We saw almost the same pattern on our login endpoint last month.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?