On Wednesday 20 March 2024 at 13:33 UTC, a HTTP/2 rapid reset targeted a municipal services customer in the Middle East. The attack peaked at 214.5 million requests per second and lasted 134 minutes. Traffic originated from 2211 autonomous systems in 20 countries, predominantly mobile carrier ranges.
| Vector | HTTP/2 rapid reset |
| Peak | 214.5 million requests per second |
| Duration | 134 min |
| Time to mitigation | 0.416 s |
| Attack traffic reaching origin | 0.035% |
| Legitimate traffic challenged | 0.24% |
Timeline
The attack was preceded by a breaking political story. Request rates on the targeted routes exceeded their hourly baseline by a factor of 199 within 5 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
- Keep origin IPs out of public DNS history.
- Enable log streaming to your SIEM for faster correlation.
- Review allow-listed partner ranges quarterly.
Is the risk score exposed in the logs so we can build our own dashboards on it?
We moved from a scrubbing provider to always-on last year; time to mitigation went from minutes to basically nothing.
This matches what we see in iGaming around big matches.
This matches what we see in iGaming around big matches.
How do you avoid challenging uptime monitors and partners?
The point about origin IPs leaking through certificate transparency logs is underrated.
We moved from a scrubbing provider to always-on last year; time to mitigation went from minutes to basically nothing.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?
Great to hear, thanks for sharing your experience.