On Tuesday 10 June 2025 at 19:55 UTC, a WebSocket connection flood targeted a electronics retail customer in the UK. The attack peaked at 480.6 million requests per second and lasted 29 minutes. Traffic originated from 939 autonomous systems in 67 countries, predominantly mobile carrier ranges.
| Vector | WebSocket connection flood |
| Peak | 480.6 million requests per second |
| Duration | 29 min |
| Time to mitigation | 0.733 s |
| Attack traffic reaching origin | 0.052% |
| Legitimate traffic challenged | 0.79% |
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 178 within 6 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
The customer’s status page stayed green throughout; they learned about the attack from our notification.
Recommendations
- Review allow-listed partner ranges quarterly.
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Keep origin IPs out of public DNS history.
The point about origin IPs leaking through certificate transparency logs is underrated.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Any plans to support per-tenant limits keyed on a JWT claim?
Thanks! Yes — the risk score and its components are included in every log record.