CSRF ou Cross-Site Request Forgery est une vulnérabilité de site Web où un attaquant peut provoquer une action dans la session d'une victime sur un autre site Web. L'une des choses qui rend CSRF si risqué est qu'il ne nécessite même pas d'interaction de l'utilisateur, tout ce dont la victime a besoin est de voir une page Web contenant l'exploit.
Astuce : CSRF se prononce généralement soit lettre par lettre, soit « sea surf ».
Comment fonctionne une attaque CSRF ?
L'attaque implique que l'attaquant crée un site Web qui dispose d'une méthode pour faire une demande sur un autre site Web. Cela peut nécessiter une interaction de l'utilisateur, par exemple en lui faisant appuyer sur un bouton, mais cela peut également être sans interaction. En JavaScript, il existe des moyens de provoquer une action automatiquement. Par exemple, une image de zéro par zéro pixel ne sera pas visible pour l'utilisateur mais peut être configurée pour que son « src » fasse une demande à un autre site Web.
JavaScript est un langage côté client, cela signifie que le code JavaScript est exécuté dans le navigateur plutôt que sur le serveur Web. Grâce à ce fait, l'ordinateur qui fait la requête CSRF est en fait celui de la victime. Malheureusement, cela signifie que la demande est faite avec toutes les autorisations dont dispose l'utilisateur. Une fois que le site Web attaquant a incité la victime à faire la demande CSRF, la demande est essentiellement impossible à distinguer de l'utilisateur qui fait la demande normalement.
CSRF est un exemple d'"attaque adjointe confuse" contre le navigateur Web, car le navigateur est amené à utiliser ses autorisations par un attaquant sans ces privilèges. Ces autorisations sont vos jetons de session et d'authentification sur le site Web cible. Votre navigateur inclut automatiquement ces détails dans toute demande qu'il fait.
Les attaques CSRF sont quelque peu complexes à organiser. Tout d'abord, le site Web cible doit avoir un formulaire ou une URL qui a des effets secondaires tels que la suppression de votre compte. L'attaquant doit ensuite créer une requête pour effectuer l'action souhaitée. Enfin, l'attaquant doit amener la victime à charger une page Web contenant l'exploit pendant qu'elle est connectée au site Web cible.
Pour éviter les problèmes CSRF, la meilleure chose à faire est d'inclure un jeton CSRF. Un jeton CSRF est une chaîne générée aléatoirement qui est définie comme un cookie, la valeur doit être incluse avec chaque réponse à côté d'un en-tête de demande qui inclut la valeur. Bien qu'une attaque CSRF puisse inclure le cookie, il n'y a aucun moyen de déterminer la valeur du jeton CSRF pour définir l'en-tête et donc l'attaque sera rejetée.