On Tuesday 27 May 2025 at 03:53 UTC, a credential stuffing targeted a B2B SaaS customer in the Nordics. The attack peaked at 305.5 million requests per second and lasted 179 minutes. Traffic originated from 3852 autonomous systems in 102 countries, predominantly a rented booter service.
| Vector | credential stuffing |
| Peak | 305.5 million requests per second |
| Duration | 179 min |
| Time to mitigation | 0.840 s |
| Attack traffic reaching origin | 0.020% |
| Legitimate traffic challenged | 0.75% |
Timeline
The attack was preceded by no stated motive. Request rates on the targeted routes exceeded their hourly baseline by a factor of 324 within 18 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
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Review allow-listed partner ranges quarterly.
- Enable log streaming to your SIEM for faster correlation.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?
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.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.