On Monday 8 March 2021 at 17:07 UTC, a HTTP/2 rapid reset targeted a B2B SaaS customer in North America. The attack peaked at 265.9 million requests per second and lasted 105 minutes. Traffic originated from 805 autonomous systems in 108 countries, predominantly misconfigured open reflectors.
| Vector | HTTP/2 rapid reset |
| Peak | 265.9 million requests per second |
| Duration | 105 min |
| Time to mitigation | 0.843 s |
| Attack traffic reaching origin | 0.033% |
| Legitimate traffic challenged | 0.73% |
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 177 within 37 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
- Enable log streaming to your SIEM for faster correlation.
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Keep origin IPs out of public DNS history.
Our auditors asked for exactly this kind of incident evidence under DORA.
Machine-readable ranges are at /ips.json and via the API.
Clear and practical, thanks.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Good question. We will cover that in a follow-up post.
Great write-up. We saw almost the same pattern on our login endpoint last month.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Thanks — sharing this with our on-call team.
How do you avoid challenging uptime monitors and partners?
Carpet bombing is nasty. Good to see a clear explanation of it.