Glossaire

Cross Site Request Forgery (CSRF)

Qu'est-ce que le CSRF ?

Le cross-site request forgery, souvent abrégé en CSRF (ou injection de requêtes illégitimes par rebond, en français), est un type d'attaque qui se produit quand un site Web, un blog, un e-mail, un message instantané ou une application Web malveillant(e) oblige le navigateur Web d'un utilisateur à effectuer des opérations indésirables, sur un site de confiance où l'utilisateur est actuellement authentifié. L'impact d'une attaque CSRF dépend des informations exposées dans l'application vulnérable. À leur niveau le plus élémentaire, les attaques CSRF servent à contraindre un système cible à réaliser des opérations malveillantes via le navigateur cible, à l'insu de l'utilisateur cible. L'opération est généralement connue de la victime une fois l'attaque perpétrée.

La vulnérabilité de type CSRF peut offrir à un attaquant la possibilité de contraindre un utilisateur authentifié et connecté à effectuer une opération importante, à son insu et sans son consentement. C'est l'équivalent numérique d'un escroc qui falsifie la signature d'une victime sur un document important. Mais l'attaque CSRF s'avère même plus efficace, puisque l'attaquant ne laisse aucune trace derrière lui. Pourquoi ? Parce que la requête illégitime contient toutes les informations et provient de la même adresse IP qu'une demande légitime réalisée par la victime. En d'autres termes, toute application permettant à un utilisateur d'envoyer ou de mettre à jour des données constitue une cible potentielle pour un attaquant.

Ce qu'il faut retenir, c'est que pour qu'une attaque CSRF fonctionne, la victime doit être connectée sur le site ciblé. Si cet aspect peut sembler compliquer la tâche de l'attaquant, il n'en est rien : de nombreux sites Web permettent à l'utilisateur de « Rester connecté ». Ce qui augmente considérablement le délai pendant lequel le détournement peut s'opérer.

Possibles utilisations malveillantes du CSRF

L'objectif le plus courant d'une attaque CSRF est le vol – de données, d'identité ou d'argent. Voici quelques-unes des utilisations les plus courantes du CSRF :

  • Transférer de l'argent d'un compte bancaire à un autre. Sur le site de votre banque, votre session en ligne est compromise. De ce fait, le site traite votre demande de virement comme légitime et transfère 1 000 € de votre compte vers le compte de l'attaquant. Tout porte à croire que vous avez vous-même effectué cette transaction depuis votre navigateur connecté.
  • Utiliser un système de gestion de contenu pour ajouter / supprimer du contenu sur un site Web. Si la victime est l'administrateur d'un site Web, l'attaquant prend alors le contrôle de l'intégralité du site.
  • Modifier le mot de passe d'un utilisateur. Si la victime est connectée à son compte, l'attaquant peut simplement falsifier une demande de modification de son e-mail. Après cela, il peut falsifier une demande de réinitialisation du mot de passe et prendre le contrôle total du compte de la victime.
  • Ajouter des articles au panier d'un utilisateur ou modifier l'adresse de livraison d'une commande. De nombreux sites Web disposent d'une page de type « Mon compte », qui stocke les informations de l'utilisateur. Cette page permet souvent à l'utilisateur de modifier son adresse ou le contenu de son panier. Dans le cas d'une attaque CSRF, l'attaquant peut modifier ces informations. Sur le site Web, la victime apparaît comme l'auteur de ces modifications.

Prévention des vulnérabilités CSRF

Il existe trois méthodes pour se protéger des attaques cross-site request forgery.

  1. Configurer le navigateur de sorte qu'il n'envoie pas de cookies tiers à l'application Web.
  2. Synchroniser les cookies à l'aide d'un token anti-CSRF déjà fourni au navigateur.
  3. Exiger un « défi-réponse », méthode souvent associée aux deux techniques précédentes.

Technique n°1 : cookies SameSite

SameSite est un nouvel attribut pouvant être ajouté aux cookies afin de demander au navigateur de désactiver l'utilisation de certains cookies par des tiers. Cet attribut est défini par le serveur et configure le cookie. L'attribut demande au navigateur de n'envoyer le cookie qu'en interne (first-party). La demande doit provenir du même emplacement. Par conséquent, les demandes faites par des sites tiers ne peuvent pas inclure le cookie SameSite. Cette approche permet d'éliminer efficacement toute attaque CSRF, sans qu'il soit nécessaire d'utiliser des tokens de synchronisation. Le seul inconvénient de cette technique réside dans le fait que seuls certains navigateurs modernes prennent en charge les cookies SameSite.

Technique n°2 : tokens anti-CSRF

La méthode recommandée et la plus largement adoptée pour lutter contre les attaques cross-site request forgery consiste à utiliser un token anti-CSRF, ou token de synchronisation. Lorsqu'un utilisateur envoie des informations ou interagit avec le site, ou entreprend quoi que ce soit d'autre qui génère un cookie, le token anti-CSRF doit être inclus dans la demande de cookie. Cette demande passe ensuite par un processus de vérification, où l'authenticité voire l'existence de ce token est vérifiée avant de traiter la demande. Si le token est manquant ou incorrect, la demande est rejetée.

Pour que les tokens anti-CSRF soient efficaces en matière de protection, il est essentiel que la bibliothèque de tokens connus soit régulièrement mise à jour, afin de tenir compte des menaces actuelles. Nombre de ces bibliothèques sont open source et facilement accessibles. Dans un monde idéal, il conviendrait de conjuguer ces deux méthodes afin de lutter contre une attaque de type CSRF.

Technique n°3 : défi-réponse

Afin de bénéficier d'un niveau de protection supplémentaire, vous pouvez demander à l'utilisateur de se soumettre à un défi-réponse lorsqu'il envoie un formulaire. Voici quelques exemples de défis-réponses :

  • Nouvelle authentification du mot de passe ou informations personnelles
  • Validation d'un CAPTCHA
  • Envoi d'un token à usage unique

Si les défis-réponses constituent un moyen de dissuasion efficace contre le CSRF lorsqu'ils sont correctement conçus et mis en œuvre, ils ont un impact sur l'expérience utilisateur. Les applications nécessitant un haut degré de sécurité devraient conjuguer l'utilisation de tokens et de défis-réponses.

Dans quelle mesure le CSRF est-il important ?

Les attaques CSRF peuvent être perpétrées sur toutes sortes de sites. Si un site autorise l'utilisateur à modifier les données, le site devient la cible potentielle d'un hacker. À l'aide des techniques présentées ci-dessus, votre site peut nettement améliorer son niveau de sécurité.    

Lorsqu'elle est menée à bien, une attaque CSRF peut avoir des répercussions très variées, qui dépendent des privilèges de la victime. Si la cible est un utilisateur standard, tout son compte est susceptible d'être compromis, de ses informations personnelles à ses privilèges sur le site. Et ce n'est rien à côté de l'impact d'une attaque CSRF sur le compte d'un administrateur : elle pourrait paralyser l'ensemble du site. Devant l'ampleur d'une possible attaque CSRF, il est essentiel que tout pack de sécurité Web permette de s'en prémunir.

En savoir plus sur les attaques de type CSRF

Lectures complémentaires

Découvrez comment Barracuda peut vous aider

Barracuda Web Application Firewall protège automatiquement votre site et vos applications Web de toute attaque CSRF, et de milliers d'autres cybermenaces, y compris celles répertoriées dans le Top 10 de l'OWASP. Vous ne disposez pas encore d'un pare-feu ? Demandez un essai gratuit à Barracuda. Utilisez aussi Barracuda Vulnerability Manager pour analyser gratuitement votre site Web et vérifier s'il est vulnérable à une attaque CSRF.

Outre une protection de type pare-feu, Barracuda offre également une protection anti-CSRF dans sa solution Load Balancer ADC. L'équilibreur de charge est un contrôleur de livraison d'applications sécurisé, conçu pour garantir la disponibilité, la vitesse et le contrôle du site Web. Des mises à jour automatiques assurent une sécurité complète face aux actuelles et nouvelles menaces visant la couche 7 (cross-site scripting, injections SQL et cross-site request forgery).

Des questions sur le cross-site request forgery ? Contactez-nous dès maintenant.