L’attaque « Web Cache Deception »

 

Salut à tous,

 

Comme nombre d'entre vous, je fais à mes heures perdues un peu de veille informatique.
C'est toujours utile de rester en mouvement dans un monde technologique en perpétuel mouvement.

J'ai, pas plus tard qu'hier, découvert un nouveau type d'attaque.
Je me suis dit que c'était peut-être l'occasion de vous dire que je suis toujours là, bien vivant, mais un peu moins actif aussi ...

Cache & Optimisation

Nombreux sont les serveurs Web qui utilisent ce que l'on appelle du "cache".
Le cache consiste à dire qu'un fichier ne bougera pas, qu'il n'est pas nécessaire de faire un quelconque traitement dessus, et donc, que si quelqu'un souhaite accéder à ce fichier, on peut lui envoyer telle quelle (sans vérifier si celui-ci a changé depuis la dernière consultation).

Cela permet à un serveur de ne pas travailler lorsque cela n'est pas nécessaire.

Le plus souvent, on met en cache les fichiers css, javascript, mp3, mp4 ...
Bref, les fichiers volumineux ou non, qui ne changent pas tous les jours.

Aussi, un serveur peut être configuré pour qu'automatiquement, lorsqu'on lui demande d'accéder à tel type de fichier, le fichier en question, reste en cache durant x secondes / minutes / heures / jours ...

 

Ergonomie et confort

Pour éviter de perdre un client sur un lien erroné, comme cela arrive souvent, de nombreux sites vont afficher une page par défaut...
Cela peut être dans le cas d'un vieux lien, d'un mauvais copier-coller, ...
Bref les raisons sont multiples ...

Par exemple si je souhaite me rendre sur une url du type :

https://site.com/home/myaccount/tutututututututut

Le lien fonctionnera probablement, mais m'affichera en réalité la page :

https://site.com/home/myaccount/

Cette page affichera peut-être votre nom, votre prénom, votre email ... éventuellement un identifiant unique dans le code source permettant de vous authentifier ...

 

Concept de l'attaque "Web Cache Deception"

Cette attaque exploite donc à la fois un aspect "optimisation par le cache", et un aspect le "confort d'utilisation".

En imaginant, toujours pour reprendre notre précédent exemple, qu'un utilisateur A se rende sur le lien suivant :

https://site.com/home/myaccount/fichier-qui-n-existe-pas.css

En imaginant que le site, malgré l'absence du fichier "fichier-qui-n-existe-pas.css", affiche quand même la page : https://site.com/home/myaccount/

 

Alors, si le serveur est configuré pour mettre en cache tous les fichiers ".css"
Même si le fichier n'existe pas, le contenu de "https://site.com/home/myaccount/" qui s'affichera, sera considéré comme le contenu du fichier "fichier-qui-n-existe-pas.css".

Le lien

https://site.com/home/myaccount/fichier-qui-n-existe-pas.css

Sera donc créé avec le contenu de la page "https://site.com/home/myaccount/"

Si un utilisateur B tente à son tour d'accéder au fichier "fichier-qui-n-existe-pas.css" celui-ci pourra consulter la page  "https://site.com/home/myaccount/" de l'utilisateur A

 

Conclusion

Pour se protéger de ce genre de vulnérabilité, il vaut mieux définir soit même les fichiers à mettre en cache, c'est plus long, mais plus précis, qu'un traitement automatique qui génère à la volée les fichiers à mettre en cache.

Je vous invite également à consulter l'article d'Omer Gil qui m'a inspiré cet article :
http://omergil.blogspot.fr/

Partagez ce contenu

One comment

  • Bonjour,

    Je ne connaissais pas dyrk.org et je l’ai decouvert au travers de recherches sur notre ami a tous.

    Tout d’abord bravo ce site represente tout ce dont a quoi j’aspire. Il y a enormement de sujets auxquels j’ai deja pense.

    Je ne travaille pas dans l’informatique et la route du savoir et des connaissances est pour moi longue et laborieuse :)

    Je cherche a elagargir (apprendre je vais pas mentir) mes connaissances dans le domaine de la securite informatique !

    En tout cas merci pour ce site !

    J’attend le prochain article avec impatience.

    A bientot

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *