Fondamentaux
Qu’est-ce que le Cross Side Request Forgery ?
Les attaques CSRF, ou Cross Side Request Forgery, sont des attaques particulièrement sophistiquées qui se passent en deux temps. Le but est de contourner la sécurité d’un site au niveau de l’utilisateur et de son navigateur web. Cette attaque ne laisse pas de traces et lorsque la victime s’en aperçoit, il est trop tard. Néanmoins, il existe des méthodes pour s’en protéger.
La notion de CSRF ou de falsification de requête intersites
Pour bien comprendre le concept de Cross Side Request Forgery, il convient en premier d’en définir l’action. Cette attaque vise à exploiter la vulnérabilité d’un site ou d’une application au niveau de l’authentification. Pour ce faire, elle se sert de la faille CSFR du navigateur. Ce type d’attaque consiste à entrer de façon illégale dans un site tiers, par le biais d’un utilisateur autorisé.
L’utilisation d’une vulnérabilité CSRF pour entrer dans un site en se servant d’un utilisateur
Le CRSF consiste à faire réaliser une action sur un site en trompant un de ses utilisateurs. Le pirate va réaliser un script. Il va l’envoyer à sa victime dissimulée dans une page web, une pièce jointe ou tout autre vecteur. En l’ouvrant, l’utilisateur va envoyer à son insu une requête HTTP au site visé. Si sa session est active, le pirate va pouvoir usurper son identité et son accès et agir par ce compte.
La Cross Side Request Forgery permet à l’attaquant de contraindre les utilisateurs légitimes d’un site d’exécuter des actions à leur insu. Le script réalisé par le pirate va tromper la sécurité du site en se servant de la faille CSRF du navigateur de l’internaute. Pire, à partir du moment où le pirate se sert d’un utilisateur légitime, le piratage est difficile à détecter. Ces attaques ne laissent pas de trace.
Quelles sont les pages vulnérables aux attaques CSRF ?
Ce type de piratage ne fonctionne cependant que sur des sites dont la sécurité comporte une faille de sécurité. En premier lieu, il faut que la page visée se serve uniquement de cookies pour assurer l’authentification des utilisateurs. Ensuite, il ne faut pas qu’il y ait des aléas dans les paramètres de la requête. Ceci signifie que l’authentification sur le site ne doit pas demander d’autres éléments qu’un cookie. L’entrée dans le site doit être automatique.
Si le site doit attendre un mot de passe, la requête CSRF ne pourra aboutir puisque le pirate n’en dispose pas. Une application bien sécurisée donnera ainsi davantage de fil à retordre aux hackers.
Lancer des attaques CSRF contre un site ou une application : exemple
Le mode opératoire est le suivant. Lorsque l’attaquant veut forcer un site ou une application web à réaliser une action précise, il lui faut trouver un visiteur. Il va chercher à identifier l’adresse mail d’un utilisateur légitime. Le pirate va alors créer sa requête sous la forme d’une URL ou en utilisant un cookie. Ensuite, ce code malveillant sera intégré dans un lien. Ce lien sera expédié par mail à un utilisateur du site ou de l’application. Le mail semblera émaner de l’application ciblée. Néanmoins, pour que l’attaque réussisse, la session de l’utilisateur sur le site visé doit être active.
Les objectifs des attaques de type Cross Side Forgery Request
Les objectifs de ce type d’attaques sont divers. Cela peut aller du simple vol d’identifiants à une prise de contrôle total du site distant. Le vol de données est moins concerné par les attaques CSRF.
Prendre le contrôle d’une application par une attaque CSRF sur le compte d’un administrateur
En attaquant l’administrateur d’un site, un pirate peut en prendre le contrôle total. À compter de cette action, il pourra faire exécuter n’importe quelle action au serveur ou a l’application. C’est le cas le plus grave, bien qu’il soit relativement rare.
Obtenir un mot de passe en utilisant la faille CSRF du navigateur d’un utilisateur
Le but des attaques peut aussi être d’obtenir le mot de passe d’un utilisateur. Bien entendu, le pirate va lancer ses attaques contre une application web dont la politique de cookies Samesite est faible. En envoyant une requête get, le cybercriminel amènera l’utilisateur à modifier son mot de passe. Si celui-ci commet l’erreur d’exécuter l’action demandée par la requête falsifiée, l’attaquant pourra prendre la main sur son compte, comme s’il était l’utilisateur légitime. Il pourra même modifier le mot de passe et ainsi bloquer l’accès au compte.
L’utilisation d’une Cross Side Request Forgery en vue d’escroquer l’utilisateur authentifié d’une application web
Un autre des objectifs des attaquants est de profiter de ces failles de sécurité pour détourner des fonds. Si les pirates ont réussi à s’infiltrer sur l’application bancaire de l’utilisateur, ils peuvent procéder à des transferts de fonds. Si l’attaque concerne un site marchand, le but sera l’achat d’objet ou la modification de l’adresse de livraison. Bien entendu, d’autres malversations comme le vol de données ou l’usurpation d’identité peuvent aussi se faire par le biais d’une CSRF.
L’impact des attaques CSRF sur des sites ou des applications web
L’impact d’une attaque peut être grave. Cela dépend de différents paramètres. Si c’est une application web d’une banque qui est attaquée, les conséquences peuvent être catastrophiques.
Les actions de type CSRF pour obtenir un mot de passe ou un code d’accès
Une attaque qui vise à faire modifier un mot de passe pour obtenir l’accès internet des utilisateurs du domaine d’une banque peut mener à la ruine du titulaire du compte. En effet, à partir du moment où le piratage réussi, l’escroc pourra mener toutes les actions que la victime est autorisée à réaliser à partir de son compte.
L’impact des attaques contre l’administrateur d’un site ou d’une application
Une attaque CSRF peut également viser à prendre le contrôle d’une application complète. Dans ce cas, le pirate devra s’attaquer à la cession de l’administrateur d’un domaine. Ce type de cyberattaque, en cas de réussite, peut totalement détruire les applications ou le site ciblé. Certes, ces derniers ne laissent en principe pas leur page ou leur site sans protection. Néanmoins, certains sites ne sont pas suffisamment sécurisés. Dans ces cas, un pirate qui réussirait une attaque CSRF aurait la main sur la totalité de l’application.
Prévenir et lutter contre la vulnérabilité et les attaques CSRF
Avant d’aborder l’aspect protection contre les attaques CSFR, l’utilisateur doit savoir une chose. Les attaques Cross Side Request Forgery ne fonctionnent que si sa session est active. En d’autres termes, si l’utilisateur prend la précaution de se déconnecter après utilisation, il complique considérablement la tâche du pirate. En revanche, il doit se rappeler qu’il ne faut jamais cliquer sur un lien dont on n’est pas sûr. Mais il existe d’autres protections pour contrer la faille CSFR d’un navigateur ou d’un serveur.
Utiliser un jeton ou un token pour contrer les attaques CSRF
Les jetons, ou token en anglais, permettent de sécuriser la relation application web, navigateur et utilisateurs. Cela fonctionne de la façon suivante. Lors de chaque cession, un site sécurisé attribue un jeton CRSF à l’utilisateur. Ce token est partagé entre le site et le navigateur de l’internaute. En pareil cas, quand le navigateur lance une requête, le serveur vérifie la présence de ce jeton. S’il n’y est pas ou si le token est erroné, le serveur ne répondra pas à la requête.
Se protéger des attaques CSRF en utilisant l’attribut Samesite sur les cookies
L’attribut Samesite est une entité qu’une application va intégrer à un cookie de session afin de renforcer l’authentification de l’utilisateur. Or, lors d’une attaque CSFR, le pirate ne dispose pas de cet élément. Le défaut de cet attribut Samesite va signaler au serveur que la requête n’est pas légitime. Le serveur de l’application visée va alors refuser d’exécuter les requêtes qui ne le comportent pas.
L’utilisation de l’en-tête Referer pour se prémunir des requêtes de types CSRF
Une autre méthode de protection contre une attaque de types CSRF est l’utilisation de l’en-tête referer. Il faut savoir que dans une requête HTTP se trouve un champ qui indique d’où vient la requête. C’est la zone referer. Elle contient l’URL et permet au serveur d’identifier d’où vient une requête. Cet outil permet d’identifier la page visitée précédente. C’est le dispositif qui permet de revenir à la page précédente d’un seul clic. Cette fonction permet de vérifier que les requêtes viennent bien d’un site qui est légitime.
La double authentification : l’arme absolue contre les attaques de type CSFR
La double authentification permet à un site de se faire confirmer l’identité de l’internaute désireux de se connecter son compte. Lorsque celui-ci cherche à se connecter son compte, le site lui fait parvenir un SMS sur son téléphone mobile. L’internaute entre alors le code réceptionné dans le champ dédié. Il confirmera ainsi son identité. Suite à cette opération, il pourra accéder à son compte.
Les tentatives de fraudes CSRF sont malheureusement fréquentes. Elles ne sont possibles que sur les sites qui authentifient leurs utilisateurs par des cookies uniquement. Ainsi, le premier réflexe à avoir est de se déconnecter après chaque utilisation. Jeton, attribut Samsite, attribut referer forment de bonnes parades, mais l’arme absolue reste néanmoins la double authentification.