Bien qu’il s’agisse d’une vulnérabilité connue et bien documentée, l’empoisonnement du cache Web continue d’apparaître sur le Web.

Au cours de recherches approfondies sur de nombreux sites Web, y compris certains services en ligne à fort trafic, le chercheur en sécurité Iustin Ladunca (Youstin) a récemment découvert 70 vulnérabilités d’empoisonnement du cache avec divers impacts.

Les attaques d’empoisonnement du cache Web ciblent les points de stockage intermédiaires entre les serveurs Web et les périphériques clients, tels que les serveurs de point de présence, les proxys et les équilibreurs de charge.

Ces intermédiaires contribuent à améliorer les performances des sites Web en stockant des versions locales du contenu Web pour accélérer leur livraison aux clients Web.

Les attaques d’empoisonnement du cache Web manipulent le comportement des serveurs de cache et la façon dont ils répondent aux demandes d’URL spécifiques par les clients.

DoS et XSS

« J’ai commencé à faire des recherches sur l’empoisonnement du cache Web en novembre 2020, peu de temps après avoir lu les recherches approfondies de James Kettle sur le sujet », a déclaré Ladunca. La gorgée quotidienne.

« Quelques semaines plus tard, j’ai découvert deux nouvelles vulnérabilités d’empoisonnement du cachece qui m’a fait réaliser à quel point la surface d’attaque pour l’empoisonnement du cache est large.

Dans un rédaction sur son blogladunca a détaillé comment il a découvert et signalé les vulnérabilités du cache Web, qui comprenaient Apache Traffic Server, GitHub, GitLab, HackerOne et Cloudflare, entre autres serveurs.

« Un modèle courant consistait à mettre en cache des serveurs configurés pour ne mettre en cache que des fichiers statiques, ce qui signifie que les attaques étaient limitées aux fichiers statiques uniquement », a déclaré Ladunca. « Même ainsi, il y avait toujours un impact significatif, car les sites Web modernes dépendent fortement de JS [JavaScript] et CSS [cascading style sheets] et la suppression de ces fichiers affecterait vraiment la disponibilité des applications.

En savoir plus sur les dernières nouvelles sur le piratage du monde entier

Plusieurs des vulnérabilités du cache Web ont entraîné des attaques par déni de service (DoS). Les serveurs de cache utilisent certains en-têtes comme clés pour stocker et récupérer les demandes d’URL. En utilisant des valeurs non valides dans les en-têtes sans clé, ladunca a pu forcer les serveurs à mettre en cache les réponses d’erreur et à les servir plus tard à la place du contenu d’origine, ce qui a rendu les pages Web cibles inaccessibles aux clients.

« En termes de techniques utilisées, la plus courante était de loin la CP-DoS via des en-têtes sans clé, qui représentaient probablement 80 % des [the] résultats totaux », a déclaré Ladunca.

D’autres vulnérabilités d’empoisonnement du cache Web pourraient conduire à des attaques de script intersite (XSS). Par exemple, une vulnérabilité pourrait forcer le serveur de cache à transférer les demandes de fichiers JavaScript vers une adresse contrôlée par l’attaquant. Dans un autre cas, ladunca a pu rediriger une demande de cache d’un hôte vers un autre vulnérable aux attaques XSS basées sur DOM.

Leçons apprises

Ladunca a reçu un total d’environ 40 000 $ en prime de bogue pour les 70 vulnérabilités de cache Web qu’il a découvertes. Mais il a également retenu d’importantes leçons sur la sécurisation des serveurs de cache Web.

« Je dirais qu’un bon moyen de sécuriser les CDN contre les attaques d’empoisonnement du cache serait de désactiver la mise en cache des codes d’état d’erreur, une atténuation qui devrait arrêter une grande partie des attaques CP-DoS », a-t-il déclaré.

Le chercheur a également recommandé d’utiliser Param Miner de PortSwigger, un outil open source capable d’identifier les paramètres cachés et non liés. L’exécution de Param Miner sur des applications Web peut aider à détecter les en-têtes sans clé pouvant être utilisés pour l’empoisonnement du cache Web.

EN RELATION Bogue d’empoisonnement du cache Web découvert dans le framework Symfony PHP