On Thursday 8 January 2026 at 09:07 UTC, a TLS handshake exhaustion targeted a news publisher customer in the Benelux. The attack peaked at 358.0 million requests per second and lasted 180 minutes. Traffic originated from 1624 autonomous systems in 57 countries, predominantly compromised cloud VMs.
| Vector | TLS handshake exhaustion |
| Peak | 358.0 million requests per second |
| Duration | 180 min |
| Time to mitigation | 0.319 s |
| Attack traffic reaching origin | 0.031% |
| Legitimate traffic challenged | 0.01% |
Timeline
The attack was preceded by a hacktivist channel announcing the target. Request rates on the targeted routes exceeded their hourly baseline by a factor of 670 within 29 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.
- Enable authenticated origin pulls.
Do you publish the edge IP ranges in a machine-readable format?
Verified good bots and allow-listed partners bypass challenges entirely.
Thanks — sharing this with our on-call team.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Great write-up. We saw almost the same pattern on our login endpoint last month.
Thanks! Yes — the risk score and its components are included in every log record.
Any plans to support per-tenant limits keyed on a JWT claim?
This matches what we see in iGaming around big matches.
Our auditors asked for exactly this kind of incident evidence under DORA.
Any plans to support per-tenant limits keyed on a JWT claim?
Interesting that most attacks are under ten minutes. Our experience is similar.