[CSRF] – Lutter efficacement contre ce genre d’attaque !
Coucou bande de vilains pirates !!!
J'étais l'autre jour à auditer la plateforme de quelques amis ^^
Et je suis tombé sur 2 jolis petites failles, qui permettaient à distance de :
- Déconnecter un utilisateur
- Supprimer ses messages
Ces 2 failles font partie de la famille des CSRF "Cross Site Request Forgery"
Késako ?
Et bien ce sont des vulnérabilités liées au "non contrôle" de l'action humaine
Par exemple, et dans ce cas présent, si vous avez un lien de suppression d'un contenu, de déconnexion, ....
Si ce lien ne contrôle pas d’interaction humaine, n'importe qui peut sur son site, glisser une petite iframe, un script, ou une image ... appelant ces fameux liens provenant d'un site vulnérable ...
L'internaute qui se baladera ainsi sur le site malveillant ...
Ouvrira alors à son insu, de manière transparente ces fameux liens ...
Ce qui n'aura d'autre effet que :
De supprimer ses données, ou de le déconnecter du site vulnérable ....
Comment s'en protéger ?
Les navigateurs modernes nous protègent de diverses manières, par exemple en interdisant à un site X d'accéder ou de créer des cookies sur un site Y ... ou bien en interdisant l’exécution de javascript depuis une URL (XSS)
Aussi, nous pouvons bénéficier de ces sécurités, tout en exploitant les cookies pour contrôler que l'action est humaine.
Par exemple ... en remplaçant ce genre de lien :
<a href="http://site.com/logout">Deconnexion</a>
Par ... ce genre de lien :
<a href=# onclick="Logout()">Deconnexion</a>
Un lien qui lorsqu'il sera cliqué par l'utilisateur, appellera une fonction javascript.
Cette fonction se chargera de créer pour l'utilisateur un cookie spécial avant de le rediriger vers le fameux lien de déconnexion.
La fameuse page de déconnexion ... contrôlera alors si le cookie existe avant d’exécuter l'action, et de supprimer ce fameux cookie.
Avec ce genre de méthodologie, vous devriez être plutôt tranquille ... sauf si votre internaute, utilisateur un vieux navigateur très permissif ....