Supposons qu’un utilisateur est connecté à une plateforme en ligne. Après sa connexion, l’utilisateur rester connecté pendant toute la durée de la session (cette période peut varier), sans devoir saisir à nouveau son mot de passe. C’est ici l’occasion idéale pour un cybercriminel : les utilisateurs connectés sont, en effet, en mesure d’exécuter des actions plus approfondies que les utilisateurs non connectés.
Explication du principe de CSRF : tandis que l’utilisateur est connecté au portail, il accède à un autre site, créé par un hacker. Là, il exécute une action quelconque en cliquant, par exemple, sur un bouton. Le hacker envoie alors une requête HTTP au portail utilisé par l’utilisateur et usurpe ainsi son identité pour exécuter une action malveillante pendant que sa session est encore active. Pour ce faire, le hacker n'a besoin que de la bonne requête HTTP, un élément qu'il lui est relativement facile de récupérer.
Le serveur du portail reconnaît la formulation de la requête HTTP et utilise les cookies correspondants pour confirmer que l’utilisateur (c’est-à-dire son navigateur) est encore connecté. Le serveur exécute l’action et il se peut que l’utilisateur ne remarque pas qu’une action a été exécutée en son nom.
L’attaque CSRF aboutit car le serveur de réception ne vérifie pas la provenance de la requête. Il ne différencie donc pas les requêtes HTTP émis par le site même ou une source étrangère quelconque. L’agresseur exploite cette faiblesse du navigateur qui retransmet les requêtes sans en évaluer les conséquences.
Les trois variantes d’attaque CSRF les plus fréquentes sont les suivantes : la plus populaire est sans doute la fausse affectation d’une URL. Elle est dissimulée sur un site externe ou dans un email. Lorsque l’URL est appelée, la requête HTTP est émise. En principe, l’utilisateur peut aisément prendre note de cet URL s’il y fait très attention. Via l’ingénierie sociale et le spoofing d’URL, l’origine de l’URL peut toutefois être masquée.
Il existe également des points de référence à ce que l’on appelle le Cross Site Scripting (XSS) : au lieu de construire leur propre site malveillant, certains hackers manipulent un site pré-existant via XSS et l’exploite à des fins criminelles, à l’insu de son exploitant réel. En règle générale, cette attaque implique la fausse affectation d’un site JavaScript qui exécute alors une attaque CSRF.
Lorsque le hacker réussit à enregistrer un logiciel malveillant sur l’ordinateur de la victime, une attaque Cross Site Request Forgery peut être lancée. L'agresseur peut alors directement commander l’envoi de la requête HTTP par le navigateur. Une fois des virus ou logiciels malveillants enregistrés sur l’ordinateur client, l’agresseur dispose de nombreuses autres possibilités d'attaque.