On Tuesday 28 July 2026 at 21:20 UTC, a TLS handshake exhaustion targeted a municipal services customer in the UK. The attack peaked at 956.4 million requests per second and lasted 119 minutes. Traffic originated from 2892 autonomous systems in 56 countries, predominantly a Mirai-derived IoT botnet.
| Vector | TLS handshake exhaustion |
| Peak | 956.4 million requests per second |
| Duration | 119 min |
| Time to mitigation | 0.922 s |
| Attack traffic reaching origin | 0.056% |
| Legitimate traffic challenged | 0.68% |
Timeline
The attack was preceded by no stated motive. Request rates on the targeted routes exceeded their hourly baseline by a factor of 487 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
Checkout conversion was unchanged compared with the same hour of the previous week.
Recommendations
- Enable log streaming to your SIEM for faster correlation.
- Review allow-listed partner ranges quarterly.
- Keep origin IPs out of public DNS history.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Any plans to support per-tenant limits keyed on a JWT claim?
The point about origin IPs leaking through certificate transparency logs is underrated.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Do you publish the edge IP ranges in a machine-readable format?
Great write-up. We saw almost the same pattern on our login endpoint last month.
Carpet bombing is nasty. Good to see a clear explanation of it.