On Thursday 4 December 2025 at 16:20 UTC, a credential stuffing targeted a online payments customer in the Benelux. The attack peaked at 221.7 million requests per second and lasted 137 minutes. Traffic originated from 4126 autonomous systems in 48 countries, predominantly a headless-browser farm.
| Vector | credential stuffing |
| Peak | 221.7 million requests per second |
| Duration | 137 min |
| Time to mitigation | 0.290 s |
| Attack traffic reaching origin | 0.015% |
| Legitimate traffic challenged | 0.25% |
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 747 within 20 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
- Enable log streaming to your SIEM for faster correlation.
- Keep origin IPs out of public DNS history.
- Lower challenge thresholds on authentication endpoints during high-risk events.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Could you share the dataset behind the percentages?
Thanks! Yes — the risk score and its components are included in every log record.
How do you avoid challenging uptime monitors and partners?