On Sunday 18 February 2024 at 04:08 UTC, a HTTP GET flood targeted a tax authority portal customer in Iberia. The attack peaked at 38.4 million requests per second and lasted 169 minutes. Traffic originated from 479 autonomous systems in 108 countries, predominantly a headless-browser farm.
| Vector | HTTP GET flood |
| Peak | 38.4 million requests per second |
| Duration | 169 min |
| Time to mitigation | 0.185 s |
| Attack traffic reaching origin | 0.030% |
| Legitimate traffic challenged | 0.67% |
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 523 within 38 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.
- Add a dedicated rate limit for the targeted route.
- Enable log streaming to your SIEM for faster correlation.
Solid runbook advice. The DNS-at-2am point hit home.
Machine-readable ranges are at /ips.json and via the API.
The billing model is what got our finance team on board, honestly.
Verified good bots and allow-listed partners bypass challenges entirely.
How does the proof-of-work challenge behave on older Android devices? Any numbers below Android 10?
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.
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.