On Tuesday 19 December 2023 at 16:51 UTC, a HTTP/2 rapid reset targeted a B2B SaaS customer in Western Europe. The attack peaked at 886.8 million requests per second and lasted 35 minutes. Traffic originated from 3347 autonomous systems in 13 countries, predominantly a rented booter service.
| Vector | HTTP/2 rapid reset |
| Peak | 886.8 million requests per second |
| Duration | 35 min |
| Time to mitigation | 0.099 s |
| Attack traffic reaching origin | 0.020% |
| Legitimate traffic challenged | 0.41% |
Timeline
The attack was preceded by no stated motive. Request rates on the targeted routes exceeded their hourly baseline by a factor of 105 within 9 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
- Keep origin IPs out of public DNS history.
- Lower challenge thresholds on authentication endpoints during high-risk events.
- Enable authenticated origin pulls.
Great write-up. We saw almost the same pattern on our login endpoint last month.
This matches what we see in iGaming around big matches.
We had the exact false-positive issue with CGNAT carriers. The weighting change makes sense.
Verified good bots and allow-listed partners bypass challenges entirely.
This matches what we see in iGaming around big matches.
Any plans to support per-tenant limits keyed on a JWT claim?
Great to hear, thanks for sharing your experience.
Carpet bombing is nasty. Good to see a clear explanation of it.
Is the risk score exposed in the logs so we can build our own dashboards on it?
Great write-up. We saw almost the same pattern on our login endpoint last month.
Would love a follow-up on how you handle HTTP/3 fingerprinting.