Hi everyone,
I've been doing a deep dive into Cache Poisoning to understand how the vulnerability class has evolved over the last decade.
While modern attacks involve complex gadgets and framework confusion, I realized that to truly understand them, you have to look at the "Foundational" attacksβthe early logic flaws that started it all.
I analyzed 8 historical case studies from public bug bounty reports. Here are the 3 most interesting patterns that paved the way for modern exploitation:
1. The HackerOne Classic (2014)
X-Forwarded-Host header without validation.X-Forwarded-Host: evil.com caused the application to generate a redirect to the attacker's domain.2. GitHub's Content-Type DoS
Content-Type headers differently for the cache vs. the backend.3. The Cloudflare Capitalization Bug
TaRgEt.CoM to target.com for the cache key), but the origin server treated them as distinct.Why this matters today: Even though these are "old" reports, these exact logic flaws (normalization issues, unkeyed headers) are what cause the complex CP-DoS and secondary-context attacks we see in modern frameworks like Next.js today.
I wrote a full breakdown of all 8 case studies (including Shopify, GitLab, and Red Hat) if you want to see the specific request/response pairs.
Read the Full Analysis (Part 1)
Let me know if you have any questions about the mechanics of these early bugs!