On Friday 18 February 2022 at 16:52 UTC, a cache-busting query flood targeted a airline booking customer in the Benelux. The attack peaked at 118.7 million requests per second and lasted 135 minutes. Traffic originated from 3740 autonomous systems in 73 countries, predominantly residential proxy networks.
| Vector | cache-busting query flood |
| Peak | 118.7 million requests per second |
| Duration | 135 min |
| Time to mitigation | 0.490 s |
| Attack traffic reaching origin | 0.049% |
| Legitimate traffic challenged | 0.20% |
Timeline
The attack was preceded by a publicly announced sales event. Request rates on the targeted routes exceeded their hourly baseline by a factor of 894 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 authenticated origin pulls.
- Review allow-listed partner ranges quarterly.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?
Solid runbook advice. The DNS-at-2am point hit home.
Nice to read a vendor blog that admits what went wrong.
Verified good bots and allow-listed partners bypass challenges entirely.
Our auditors asked for exactly this kind of incident evidence under DORA.
Nice to read a vendor blog that admits what went wrong.
Is the risk score exposed in the logs so we can build our own dashboards on it?
This matches what we see in iGaming around big matches.
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.
Great to hear, thanks for sharing your experience.