SCW 아이콘
영웅 배경, 구분선 없음
블로그

Les codeurs conquièrent la sécurité : série Share & Learn - Falsification de requêtes intersites

야프 카란 싱
2018년 12월 13일 게시
마지막 업데이트: 2026년 3월 8일

Contrairement aux attaques visant directement les opérateurs de sites Web ou d'applications, l'objectif de nombreuses attaques CSRF (Cross-Site Request Forgery) est de voler de l'argent, des biens ou des informations d'identification directement à un utilisateur. Cela ne signifie pas que les opérateurs de sites doivent ignorer les vulnérabilités du code CSRF, car en fin de compte, le remplacement des fonds volés, dans le cas d'une attaque purement monétaire, peut être la responsabilité du site d'hébergement par le code non sécurisé. Et si l'utilisateur ciblé perd ses informations d'identification ou voit son mot de passe modifié sans le savoir, un criminel pourrait être en mesure de faire des ravages en utilisant cette identité volée, en particulier si la victime dispose d'un accès privilégié.

Les attaques CSRF sont assez complexes et reposent sur plusieurs couches pour réussir. En d'autres termes, beaucoup de choses doivent se passer en faveur de l'attaquant pour que cela fonctionne. Malgré cela, ils constituent un vecteur d'attaque extrêmement populaire car une attaque réussie peut transférer de l'argent directement à un pirate informatique, ou le configurer pour qu'il puisse se déplacer sur un site en toute impunité. Si tout se passe comme prévu, l'utilisateur ciblé ne saura peut-être même jamais qu'il a été victime d'une attaque.

La bonne nouvelle, c'est qu'étant donné qu'il reste encore beaucoup à faire pour qu'une attaque de la CSRF fonctionne, il existe de nombreuses techniques défensives efficaces qui peuvent les arrêter.

À cette fin, nous aborderons trois aspects clés des attaques CSRF :

  • Comment ils fonctionnent
  • Pourquoi sont-ils si dangereux
  • Comment mettre en place des défenses pour les empêcher de refroidir.

Comment fonctionnent les attaques CSRF ?

Parce que les attaques CSRF réussies ont la capacité de voler directement de l'argent, des biens ou des informations d'identification à des utilisateurs ciblés, elles sont populaires malgré le travail considérable nécessaire pour les créer. Et comme ils sont souvent essayés sur différentes plateformes, ils ont acquis au fil des ans une variété de noms et de surnoms. Vous pouvez entendre des attaques CSRF appelées XSRF, Sea Surf, Session Riding, Cross-Site Reference Falgery ou Hostile Linking. Microsoft aime les qualifier d'attaques en un clic dans la plupart de sa documentation. Mais ce sont toutes des attaques CSRF, et les techniques pour les vaincre sont identiques.

Une attaque CSRF peut se produire si un utilisateur est connecté à un site faisant des affaires ou effectuant son travail. L'essentiel est que l'utilisateur soit connecté et authentifié activement sur un site Web ou une application. L'attaque est normalement lancée à partir d'un site Web secondaire ou d'un e-mail. Les attaquants utilisent souvent des techniques d'ingénierie sociale pour inciter les utilisateurs à cliquer sur un lien contenu dans un e-mail qui les redirige vers un site Web compromis contenant le script d'attaque.

Le site Web compromis contient un script qui demande au navigateur actif d'exécuter des commandes, généralement malveillantes, comme la modification du mot de passe d'un utilisateur ou le transfert d'argent sur un compte contrôlé par l'attaquant. Tant que l'utilisateur est authentifié, le site pensera que les commandes sont émises par l'utilisateur autorisé. Pourquoi ne le ferait-il pas ? L'utilisateur s'est déjà authentifié et a fourni les mots de passe nécessaires pour accéder au site. Ils peuvent même être situés à l'intérieur d'une zone géographique, assis correctement à leur terminal de bureau. S'ils souhaitent modifier leur mot de passe ou transférer des fonds, il n'y a aucune raison de ne pas croire que c'est eux qui en font la demande.

Si l'on analyse les éléments de l'attaque, on comprend pourquoi celle-ci est si difficile à réaliser pour l'attaquant. Pour commencer, l'utilisateur doit s'authentifier activement auprès du site sur lequel l'attaque a lieu. Si un e-mail contenant un script d'attaque arrive alors qu'un utilisateur a mis fin à sa session de navigation ou s'est déconnecté, l'attaque échoue.

L'attaquant est également obligé d'effectuer de nombreuses reconnaissances sur le site ciblé afin de savoir quels scripts ce site acceptera. Les attaquants ne peuvent pas voir l'écran de la victime, et tous les commentaires provenant du site Web seront adressés à la victime, et non à l'attaquant. À moins que l'attaquant ne soit en mesure de voir des preuves de l'efficacité de son attaque, comme l'apparition soudaine d'argent sur son compte, il ne saura même pas immédiatement si l'attaque a été couronnée de succès.

Dans la limite des paramètres difficiles, mais pas impossibles, liés à la connexion de l'utilisateur au moment de l'attaque et à la connaissance des scripts acceptés par le site ciblé, le code permettant d'exécuter une attaque CSRF peut être extrêmement simple, bien qu'il varie en fonction du site lui-même.

Supposons qu'une application bancaire ou financière utilise des requêtes GET pour transférer de l'argent, comme ceci :

ACCÉDEZ À http://bank.com/transferdo?acct=NancySmith12&amount=100 HTTP/1.1

Ce code enverrait une demande de transfert de 100$ à un utilisateur nommé NancySmith12.

Mais si l'utilisateur ciblé reçoit un e-mail, peut-être déguisé en celui d'un collègue, un script d'attaque CSRF peut être intégré au clic :

<a href="http://bank.com/transfer.do?acct=ShadyLady15&amount=100000">Pouvez-vous lire rapidement ce rapport trimestriel ? <a></a></a>

Si l'utilisateur ciblé tombait dans le piège du lien d'ingénierie sociale et cliquait dessus alors que la session du navigateur avec l'application financière était toujours ouverte, son navigateur demanderait à l'application d'envoyer 100 000$ sur le compte de ShadyLady15.

Le script pourrait même être caché dans une image invisible que l'utilisateur ne verrait pas, mais qui pourrait tout de même inciter le navigateur à effectuer la demande, comme suit :

<img src="http://bank.com/transfer.do?acct=ShadyLady15&amount=100000" width="0" height="0" border="0">

Le résultat est le même. ShadyLady15 reçoit 100 000$ sans que personne ne détecte l'attaque.

Pourquoi le CSRF est-il si dangereux ?

Les attaques CSRF sont populaires aujourd'hui pour la même raison que les attaques de rançongiciels continuent de se multiplier. Cela permet de faire très peu de compromis entre les agresseurs et l'argent de la victime. Lors d'une attaque par rançongiciel, les systèmes sont cryptés et les utilisateurs sont extorqués de l'argent pour déchiffrer ces données. Avec une attaque CSRF, le nombre d'étapes est encore plus court. Lorsqu'elles travaillent, les victimes envoient simplement de l'argent aux agresseurs sans le savoir.

Au-delà des attaques directes contre l'argent d'une victime ou les finances d'une entreprise, les attaques CSRF réussies peuvent être utilisées pour compromettre un réseau utilisant des utilisateurs valides. Imaginez si un attaquant pouvait utiliser un exploit CSRF pour modifier le mot de passe d'un administrateur. Ils pouvaient immédiatement utiliser ce mot de passe pour commencer à voler des données, percer des failles dans les défenses du réseau ou installer des portes dérobées.

Bien que cela demande beaucoup de travail et, dans une certaine mesure, de chance, une attaque CSRF réussie peut être comme gagner à la loterie pour les pirates, quel que soit leur objectif ultime. Lors de l'attaque d'un réseau, presque tous les autres types d'attaques nécessiteraient des mois de reconnaissance lente et lente, en essayant de rester hors du radar du personnel SIEM et de cybersécurité. En revanche, une seule attaque CSRF peut permettre de sauter plusieurs étapes de la chaîne des cyberattaques, ce qui leur permet de démarrer très près de leur objectif ultime.

Comment arrêter les attaques CSRF ?

Contrairement à la plupart des vulnérabilités, dans le cas des attaques CSRF, la faute ne vient pas vraiment du code, mais d'un exploit créé par les attaquants pour forcer un navigateur à effectuer des requêtes que l'utilisateur ne souhaite pas et dont il n'a peut-être même pas connaissance. Mais ils peuvent être vaincus.

L'une des meilleures méthodes consiste à demander aux développeurs d'ajouter un jeton CSRF à l'identité d'un utilisateur chaque fois qu'une nouvelle session est générée. Il doit être composé d'une chaîne de caractères uniques et aléatoires et être invisible pour les utilisateurs. Ajoutez ensuite la demande de jeton CSRF en tant que champ masqué aux formulaires qui sont vérifiés par le serveur chaque fois qu'une nouvelle demande est soumise. Les attaquants qui soumettent des demandes via le navigateur d'un utilisateur ne seront même pas au courant de l'existence du champ de jeton caché, et encore moins de quoi il s'agit, de sorte que toutes leurs demandes échoueront.

Une méthode encore plus simple, qui ne nécessite pas beaucoup de programmation, consiste à ajouter un défi Captcha à tout ce qui est sensible, comme les demandes de changement de mot de passe ou les ordres de transfert d'argent. Cela peut être aussi simple que de demander à un utilisateur de cliquer sur un bouton pour confirmer que le demandeur n'est pas un robot ou, dans ce cas, un script CSRF. Les attaquants ne seront pas en mesure de rédiger une réponse au défi, et les utilisateurs qui rencontrent soudainement un défi CAPTCHA sans avoir fait au préalable une demande de transfert d'argent sauront qu'il y a un problème. Il est également possible de générer un mot de passe à usage unique à l'aide d'un jeton tiers, tel qu'un smartphone, en fonction de la mesure dans laquelle l'organisation souhaite ralentir ses travaux au nom de la sécurité.

Enfin, bien que cela ne soit pas infaillible, de nombreux navigateurs comme Microsoft Edge ou Google Chrome disposent désormais de politique en matière de même origine restrictions mises en place pour bloquer les demandes provenant de n'importe qui sauf de l'utilisateur local. Forcer les utilisateurs à interagir avec votre site en utilisant les versions les plus récentes de ces navigateurs peut contribuer à intégrer une autre couche de sécurité CSRF sans aucune charge pour les équipes de développement.

Claquer la porte sur la CSRF

Avec un potentiel de paiement aussi élevé, les attaques CSRF ne disparaîtront probablement jamais complètement, mais nous espérons que vous avez appris pourquoi elles sont si persistantes et comment les bloquer définitivement de votre réseau.

Pour en savoir plus, vous pouvez consulter l'aide-mémoire de l'OWASP Cross-Site Request Forgery Prevention, qui sert de document évolutif retraçant cette vulnérabilité au fur et à mesure de son évolution. Si vous souhaitez vraiment approfondir vos connaissances en matière de sécurité, vous pouvez apprendre à vaincre cette menace et bien d'autres encore en consultant le Secure Code Warrior bloguer.

Vous pensez être prêt à mettre vos nouvelles connaissances en matière de défense à l'épreuve ? Jouez avec le démo gratuite de la plateforme Secure Code Warrior aujourd'hui.

리소스 표시
리소스 표시

Les attaques CSRF sont assez complexes et reposent sur plusieurs couches pour réussir. En d'autres termes, beaucoup de choses doivent se passer en faveur de l'attaquant pour que cela fonctionne. Malgré cela, ils constituent un vecteur d'attaque extrêmement populaire et lucratif.

더 알고 싶으신가요?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

더 알아보세요

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 주기 전반에 걸쳐 코드를 안전하게 보호하고 사이버보안이 최우선 과제인 문화를 조성하도록 Secure Code Warrior . 애플리케이션 보안 담당자, 개발자, IT 보안 책임자 또는 보안 관련 업무에 종사하는 모든 분들을 위해, 저희는 귀사의 조직이 안전하지 않은 코드로 인한 위험을 줄일 수 있도록 돕습니다.

데모 예약하기
공유하기:
링크드인 브랜드사회적x 로고
작가
야프 카란 싱
게시일: 2018년 12월 13일

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

공유하기:
링크드인 브랜드사회적x 로고

Contrairement aux attaques visant directement les opérateurs de sites Web ou d'applications, l'objectif de nombreuses attaques CSRF (Cross-Site Request Forgery) est de voler de l'argent, des biens ou des informations d'identification directement à un utilisateur. Cela ne signifie pas que les opérateurs de sites doivent ignorer les vulnérabilités du code CSRF, car en fin de compte, le remplacement des fonds volés, dans le cas d'une attaque purement monétaire, peut être la responsabilité du site d'hébergement par le code non sécurisé. Et si l'utilisateur ciblé perd ses informations d'identification ou voit son mot de passe modifié sans le savoir, un criminel pourrait être en mesure de faire des ravages en utilisant cette identité volée, en particulier si la victime dispose d'un accès privilégié.

Les attaques CSRF sont assez complexes et reposent sur plusieurs couches pour réussir. En d'autres termes, beaucoup de choses doivent se passer en faveur de l'attaquant pour que cela fonctionne. Malgré cela, ils constituent un vecteur d'attaque extrêmement populaire car une attaque réussie peut transférer de l'argent directement à un pirate informatique, ou le configurer pour qu'il puisse se déplacer sur un site en toute impunité. Si tout se passe comme prévu, l'utilisateur ciblé ne saura peut-être même jamais qu'il a été victime d'une attaque.

La bonne nouvelle, c'est qu'étant donné qu'il reste encore beaucoup à faire pour qu'une attaque de la CSRF fonctionne, il existe de nombreuses techniques défensives efficaces qui peuvent les arrêter.

À cette fin, nous aborderons trois aspects clés des attaques CSRF :

  • Comment ils fonctionnent
  • Pourquoi sont-ils si dangereux
  • Comment mettre en place des défenses pour les empêcher de refroidir.

Comment fonctionnent les attaques CSRF ?

Parce que les attaques CSRF réussies ont la capacité de voler directement de l'argent, des biens ou des informations d'identification à des utilisateurs ciblés, elles sont populaires malgré le travail considérable nécessaire pour les créer. Et comme ils sont souvent essayés sur différentes plateformes, ils ont acquis au fil des ans une variété de noms et de surnoms. Vous pouvez entendre des attaques CSRF appelées XSRF, Sea Surf, Session Riding, Cross-Site Reference Falgery ou Hostile Linking. Microsoft aime les qualifier d'attaques en un clic dans la plupart de sa documentation. Mais ce sont toutes des attaques CSRF, et les techniques pour les vaincre sont identiques.

Une attaque CSRF peut se produire si un utilisateur est connecté à un site faisant des affaires ou effectuant son travail. L'essentiel est que l'utilisateur soit connecté et authentifié activement sur un site Web ou une application. L'attaque est normalement lancée à partir d'un site Web secondaire ou d'un e-mail. Les attaquants utilisent souvent des techniques d'ingénierie sociale pour inciter les utilisateurs à cliquer sur un lien contenu dans un e-mail qui les redirige vers un site Web compromis contenant le script d'attaque.

Le site Web compromis contient un script qui demande au navigateur actif d'exécuter des commandes, généralement malveillantes, comme la modification du mot de passe d'un utilisateur ou le transfert d'argent sur un compte contrôlé par l'attaquant. Tant que l'utilisateur est authentifié, le site pensera que les commandes sont émises par l'utilisateur autorisé. Pourquoi ne le ferait-il pas ? L'utilisateur s'est déjà authentifié et a fourni les mots de passe nécessaires pour accéder au site. Ils peuvent même être situés à l'intérieur d'une zone géographique, assis correctement à leur terminal de bureau. S'ils souhaitent modifier leur mot de passe ou transférer des fonds, il n'y a aucune raison de ne pas croire que c'est eux qui en font la demande.

Si l'on analyse les éléments de l'attaque, on comprend pourquoi celle-ci est si difficile à réaliser pour l'attaquant. Pour commencer, l'utilisateur doit s'authentifier activement auprès du site sur lequel l'attaque a lieu. Si un e-mail contenant un script d'attaque arrive alors qu'un utilisateur a mis fin à sa session de navigation ou s'est déconnecté, l'attaque échoue.

L'attaquant est également obligé d'effectuer de nombreuses reconnaissances sur le site ciblé afin de savoir quels scripts ce site acceptera. Les attaquants ne peuvent pas voir l'écran de la victime, et tous les commentaires provenant du site Web seront adressés à la victime, et non à l'attaquant. À moins que l'attaquant ne soit en mesure de voir des preuves de l'efficacité de son attaque, comme l'apparition soudaine d'argent sur son compte, il ne saura même pas immédiatement si l'attaque a été couronnée de succès.

Dans la limite des paramètres difficiles, mais pas impossibles, liés à la connexion de l'utilisateur au moment de l'attaque et à la connaissance des scripts acceptés par le site ciblé, le code permettant d'exécuter une attaque CSRF peut être extrêmement simple, bien qu'il varie en fonction du site lui-même.

Supposons qu'une application bancaire ou financière utilise des requêtes GET pour transférer de l'argent, comme ceci :

ACCÉDEZ À http://bank.com/transferdo?acct=NancySmith12&amount=100 HTTP/1.1

Ce code enverrait une demande de transfert de 100$ à un utilisateur nommé NancySmith12.

Mais si l'utilisateur ciblé reçoit un e-mail, peut-être déguisé en celui d'un collègue, un script d'attaque CSRF peut être intégré au clic :

<a href="http://bank.com/transfer.do?acct=ShadyLady15&amount=100000">Pouvez-vous lire rapidement ce rapport trimestriel ? <a></a></a>

Si l'utilisateur ciblé tombait dans le piège du lien d'ingénierie sociale et cliquait dessus alors que la session du navigateur avec l'application financière était toujours ouverte, son navigateur demanderait à l'application d'envoyer 100 000$ sur le compte de ShadyLady15.

Le script pourrait même être caché dans une image invisible que l'utilisateur ne verrait pas, mais qui pourrait tout de même inciter le navigateur à effectuer la demande, comme suit :

<img src="http://bank.com/transfer.do?acct=ShadyLady15&amount=100000" width="0" height="0" border="0">

Le résultat est le même. ShadyLady15 reçoit 100 000$ sans que personne ne détecte l'attaque.

Pourquoi le CSRF est-il si dangereux ?

Les attaques CSRF sont populaires aujourd'hui pour la même raison que les attaques de rançongiciels continuent de se multiplier. Cela permet de faire très peu de compromis entre les agresseurs et l'argent de la victime. Lors d'une attaque par rançongiciel, les systèmes sont cryptés et les utilisateurs sont extorqués de l'argent pour déchiffrer ces données. Avec une attaque CSRF, le nombre d'étapes est encore plus court. Lorsqu'elles travaillent, les victimes envoient simplement de l'argent aux agresseurs sans le savoir.

Au-delà des attaques directes contre l'argent d'une victime ou les finances d'une entreprise, les attaques CSRF réussies peuvent être utilisées pour compromettre un réseau utilisant des utilisateurs valides. Imaginez si un attaquant pouvait utiliser un exploit CSRF pour modifier le mot de passe d'un administrateur. Ils pouvaient immédiatement utiliser ce mot de passe pour commencer à voler des données, percer des failles dans les défenses du réseau ou installer des portes dérobées.

Bien que cela demande beaucoup de travail et, dans une certaine mesure, de chance, une attaque CSRF réussie peut être comme gagner à la loterie pour les pirates, quel que soit leur objectif ultime. Lors de l'attaque d'un réseau, presque tous les autres types d'attaques nécessiteraient des mois de reconnaissance lente et lente, en essayant de rester hors du radar du personnel SIEM et de cybersécurité. En revanche, une seule attaque CSRF peut permettre de sauter plusieurs étapes de la chaîne des cyberattaques, ce qui leur permet de démarrer très près de leur objectif ultime.

Comment arrêter les attaques CSRF ?

Contrairement à la plupart des vulnérabilités, dans le cas des attaques CSRF, la faute ne vient pas vraiment du code, mais d'un exploit créé par les attaquants pour forcer un navigateur à effectuer des requêtes que l'utilisateur ne souhaite pas et dont il n'a peut-être même pas connaissance. Mais ils peuvent être vaincus.

L'une des meilleures méthodes consiste à demander aux développeurs d'ajouter un jeton CSRF à l'identité d'un utilisateur chaque fois qu'une nouvelle session est générée. Il doit être composé d'une chaîne de caractères uniques et aléatoires et être invisible pour les utilisateurs. Ajoutez ensuite la demande de jeton CSRF en tant que champ masqué aux formulaires qui sont vérifiés par le serveur chaque fois qu'une nouvelle demande est soumise. Les attaquants qui soumettent des demandes via le navigateur d'un utilisateur ne seront même pas au courant de l'existence du champ de jeton caché, et encore moins de quoi il s'agit, de sorte que toutes leurs demandes échoueront.

Une méthode encore plus simple, qui ne nécessite pas beaucoup de programmation, consiste à ajouter un défi Captcha à tout ce qui est sensible, comme les demandes de changement de mot de passe ou les ordres de transfert d'argent. Cela peut être aussi simple que de demander à un utilisateur de cliquer sur un bouton pour confirmer que le demandeur n'est pas un robot ou, dans ce cas, un script CSRF. Les attaquants ne seront pas en mesure de rédiger une réponse au défi, et les utilisateurs qui rencontrent soudainement un défi CAPTCHA sans avoir fait au préalable une demande de transfert d'argent sauront qu'il y a un problème. Il est également possible de générer un mot de passe à usage unique à l'aide d'un jeton tiers, tel qu'un smartphone, en fonction de la mesure dans laquelle l'organisation souhaite ralentir ses travaux au nom de la sécurité.

Enfin, bien que cela ne soit pas infaillible, de nombreux navigateurs comme Microsoft Edge ou Google Chrome disposent désormais de politique en matière de même origine restrictions mises en place pour bloquer les demandes provenant de n'importe qui sauf de l'utilisateur local. Forcer les utilisateurs à interagir avec votre site en utilisant les versions les plus récentes de ces navigateurs peut contribuer à intégrer une autre couche de sécurité CSRF sans aucune charge pour les équipes de développement.

Claquer la porte sur la CSRF

Avec un potentiel de paiement aussi élevé, les attaques CSRF ne disparaîtront probablement jamais complètement, mais nous espérons que vous avez appris pourquoi elles sont si persistantes et comment les bloquer définitivement de votre réseau.

Pour en savoir plus, vous pouvez consulter l'aide-mémoire de l'OWASP Cross-Site Request Forgery Prevention, qui sert de document évolutif retraçant cette vulnérabilité au fur et à mesure de son évolution. Si vous souhaitez vraiment approfondir vos connaissances en matière de sécurité, vous pouvez apprendre à vaincre cette menace et bien d'autres encore en consultant le Secure Code Warrior bloguer.

Vous pensez être prêt à mettre vos nouvelles connaissances en matière de défense à l'épreuve ? Jouez avec le démo gratuite de la plateforme Secure Code Warrior aujourd'hui.

리소스 표시
리소스 표시

아래 양식을 작성하여 보고서를 다운로드하세요

저희 제품 및/또는 안전한 코딩 관련 주제에 대한 정보를 보내드리는 데 귀하의 허락을 받고자 합니다. 귀하의 개인정보는 항상 최대한 신중하게 처리하며, 마케팅 목적으로 다른 기업에 절대 판매하지 않을 것입니다.

제출하다
scw 성공 아이콘
scw 오류 아이콘
양식을 제출하려면 '분석' 쿠키를 활성화해 주십시오. 완료 후에는 다시 비활성화하셔도 됩니다.

Contrairement aux attaques visant directement les opérateurs de sites Web ou d'applications, l'objectif de nombreuses attaques CSRF (Cross-Site Request Forgery) est de voler de l'argent, des biens ou des informations d'identification directement à un utilisateur. Cela ne signifie pas que les opérateurs de sites doivent ignorer les vulnérabilités du code CSRF, car en fin de compte, le remplacement des fonds volés, dans le cas d'une attaque purement monétaire, peut être la responsabilité du site d'hébergement par le code non sécurisé. Et si l'utilisateur ciblé perd ses informations d'identification ou voit son mot de passe modifié sans le savoir, un criminel pourrait être en mesure de faire des ravages en utilisant cette identité volée, en particulier si la victime dispose d'un accès privilégié.

Les attaques CSRF sont assez complexes et reposent sur plusieurs couches pour réussir. En d'autres termes, beaucoup de choses doivent se passer en faveur de l'attaquant pour que cela fonctionne. Malgré cela, ils constituent un vecteur d'attaque extrêmement populaire car une attaque réussie peut transférer de l'argent directement à un pirate informatique, ou le configurer pour qu'il puisse se déplacer sur un site en toute impunité. Si tout se passe comme prévu, l'utilisateur ciblé ne saura peut-être même jamais qu'il a été victime d'une attaque.

La bonne nouvelle, c'est qu'étant donné qu'il reste encore beaucoup à faire pour qu'une attaque de la CSRF fonctionne, il existe de nombreuses techniques défensives efficaces qui peuvent les arrêter.

À cette fin, nous aborderons trois aspects clés des attaques CSRF :

  • Comment ils fonctionnent
  • Pourquoi sont-ils si dangereux
  • Comment mettre en place des défenses pour les empêcher de refroidir.

Comment fonctionnent les attaques CSRF ?

Parce que les attaques CSRF réussies ont la capacité de voler directement de l'argent, des biens ou des informations d'identification à des utilisateurs ciblés, elles sont populaires malgré le travail considérable nécessaire pour les créer. Et comme ils sont souvent essayés sur différentes plateformes, ils ont acquis au fil des ans une variété de noms et de surnoms. Vous pouvez entendre des attaques CSRF appelées XSRF, Sea Surf, Session Riding, Cross-Site Reference Falgery ou Hostile Linking. Microsoft aime les qualifier d'attaques en un clic dans la plupart de sa documentation. Mais ce sont toutes des attaques CSRF, et les techniques pour les vaincre sont identiques.

Une attaque CSRF peut se produire si un utilisateur est connecté à un site faisant des affaires ou effectuant son travail. L'essentiel est que l'utilisateur soit connecté et authentifié activement sur un site Web ou une application. L'attaque est normalement lancée à partir d'un site Web secondaire ou d'un e-mail. Les attaquants utilisent souvent des techniques d'ingénierie sociale pour inciter les utilisateurs à cliquer sur un lien contenu dans un e-mail qui les redirige vers un site Web compromis contenant le script d'attaque.

Le site Web compromis contient un script qui demande au navigateur actif d'exécuter des commandes, généralement malveillantes, comme la modification du mot de passe d'un utilisateur ou le transfert d'argent sur un compte contrôlé par l'attaquant. Tant que l'utilisateur est authentifié, le site pensera que les commandes sont émises par l'utilisateur autorisé. Pourquoi ne le ferait-il pas ? L'utilisateur s'est déjà authentifié et a fourni les mots de passe nécessaires pour accéder au site. Ils peuvent même être situés à l'intérieur d'une zone géographique, assis correctement à leur terminal de bureau. S'ils souhaitent modifier leur mot de passe ou transférer des fonds, il n'y a aucune raison de ne pas croire que c'est eux qui en font la demande.

Si l'on analyse les éléments de l'attaque, on comprend pourquoi celle-ci est si difficile à réaliser pour l'attaquant. Pour commencer, l'utilisateur doit s'authentifier activement auprès du site sur lequel l'attaque a lieu. Si un e-mail contenant un script d'attaque arrive alors qu'un utilisateur a mis fin à sa session de navigation ou s'est déconnecté, l'attaque échoue.

L'attaquant est également obligé d'effectuer de nombreuses reconnaissances sur le site ciblé afin de savoir quels scripts ce site acceptera. Les attaquants ne peuvent pas voir l'écran de la victime, et tous les commentaires provenant du site Web seront adressés à la victime, et non à l'attaquant. À moins que l'attaquant ne soit en mesure de voir des preuves de l'efficacité de son attaque, comme l'apparition soudaine d'argent sur son compte, il ne saura même pas immédiatement si l'attaque a été couronnée de succès.

Dans la limite des paramètres difficiles, mais pas impossibles, liés à la connexion de l'utilisateur au moment de l'attaque et à la connaissance des scripts acceptés par le site ciblé, le code permettant d'exécuter une attaque CSRF peut être extrêmement simple, bien qu'il varie en fonction du site lui-même.

Supposons qu'une application bancaire ou financière utilise des requêtes GET pour transférer de l'argent, comme ceci :

ACCÉDEZ À http://bank.com/transferdo?acct=NancySmith12&amount=100 HTTP/1.1

Ce code enverrait une demande de transfert de 100$ à un utilisateur nommé NancySmith12.

Mais si l'utilisateur ciblé reçoit un e-mail, peut-être déguisé en celui d'un collègue, un script d'attaque CSRF peut être intégré au clic :

<a href="http://bank.com/transfer.do?acct=ShadyLady15&amount=100000">Pouvez-vous lire rapidement ce rapport trimestriel ? <a></a></a>

Si l'utilisateur ciblé tombait dans le piège du lien d'ingénierie sociale et cliquait dessus alors que la session du navigateur avec l'application financière était toujours ouverte, son navigateur demanderait à l'application d'envoyer 100 000$ sur le compte de ShadyLady15.

Le script pourrait même être caché dans une image invisible que l'utilisateur ne verrait pas, mais qui pourrait tout de même inciter le navigateur à effectuer la demande, comme suit :

<img src="http://bank.com/transfer.do?acct=ShadyLady15&amount=100000" width="0" height="0" border="0">

Le résultat est le même. ShadyLady15 reçoit 100 000$ sans que personne ne détecte l'attaque.

Pourquoi le CSRF est-il si dangereux ?

Les attaques CSRF sont populaires aujourd'hui pour la même raison que les attaques de rançongiciels continuent de se multiplier. Cela permet de faire très peu de compromis entre les agresseurs et l'argent de la victime. Lors d'une attaque par rançongiciel, les systèmes sont cryptés et les utilisateurs sont extorqués de l'argent pour déchiffrer ces données. Avec une attaque CSRF, le nombre d'étapes est encore plus court. Lorsqu'elles travaillent, les victimes envoient simplement de l'argent aux agresseurs sans le savoir.

Au-delà des attaques directes contre l'argent d'une victime ou les finances d'une entreprise, les attaques CSRF réussies peuvent être utilisées pour compromettre un réseau utilisant des utilisateurs valides. Imaginez si un attaquant pouvait utiliser un exploit CSRF pour modifier le mot de passe d'un administrateur. Ils pouvaient immédiatement utiliser ce mot de passe pour commencer à voler des données, percer des failles dans les défenses du réseau ou installer des portes dérobées.

Bien que cela demande beaucoup de travail et, dans une certaine mesure, de chance, une attaque CSRF réussie peut être comme gagner à la loterie pour les pirates, quel que soit leur objectif ultime. Lors de l'attaque d'un réseau, presque tous les autres types d'attaques nécessiteraient des mois de reconnaissance lente et lente, en essayant de rester hors du radar du personnel SIEM et de cybersécurité. En revanche, une seule attaque CSRF peut permettre de sauter plusieurs étapes de la chaîne des cyberattaques, ce qui leur permet de démarrer très près de leur objectif ultime.

Comment arrêter les attaques CSRF ?

Contrairement à la plupart des vulnérabilités, dans le cas des attaques CSRF, la faute ne vient pas vraiment du code, mais d'un exploit créé par les attaquants pour forcer un navigateur à effectuer des requêtes que l'utilisateur ne souhaite pas et dont il n'a peut-être même pas connaissance. Mais ils peuvent être vaincus.

L'une des meilleures méthodes consiste à demander aux développeurs d'ajouter un jeton CSRF à l'identité d'un utilisateur chaque fois qu'une nouvelle session est générée. Il doit être composé d'une chaîne de caractères uniques et aléatoires et être invisible pour les utilisateurs. Ajoutez ensuite la demande de jeton CSRF en tant que champ masqué aux formulaires qui sont vérifiés par le serveur chaque fois qu'une nouvelle demande est soumise. Les attaquants qui soumettent des demandes via le navigateur d'un utilisateur ne seront même pas au courant de l'existence du champ de jeton caché, et encore moins de quoi il s'agit, de sorte que toutes leurs demandes échoueront.

Une méthode encore plus simple, qui ne nécessite pas beaucoup de programmation, consiste à ajouter un défi Captcha à tout ce qui est sensible, comme les demandes de changement de mot de passe ou les ordres de transfert d'argent. Cela peut être aussi simple que de demander à un utilisateur de cliquer sur un bouton pour confirmer que le demandeur n'est pas un robot ou, dans ce cas, un script CSRF. Les attaquants ne seront pas en mesure de rédiger une réponse au défi, et les utilisateurs qui rencontrent soudainement un défi CAPTCHA sans avoir fait au préalable une demande de transfert d'argent sauront qu'il y a un problème. Il est également possible de générer un mot de passe à usage unique à l'aide d'un jeton tiers, tel qu'un smartphone, en fonction de la mesure dans laquelle l'organisation souhaite ralentir ses travaux au nom de la sécurité.

Enfin, bien que cela ne soit pas infaillible, de nombreux navigateurs comme Microsoft Edge ou Google Chrome disposent désormais de politique en matière de même origine restrictions mises en place pour bloquer les demandes provenant de n'importe qui sauf de l'utilisateur local. Forcer les utilisateurs à interagir avec votre site en utilisant les versions les plus récentes de ces navigateurs peut contribuer à intégrer une autre couche de sécurité CSRF sans aucune charge pour les équipes de développement.

Claquer la porte sur la CSRF

Avec un potentiel de paiement aussi élevé, les attaques CSRF ne disparaîtront probablement jamais complètement, mais nous espérons que vous avez appris pourquoi elles sont si persistantes et comment les bloquer définitivement de votre réseau.

Pour en savoir plus, vous pouvez consulter l'aide-mémoire de l'OWASP Cross-Site Request Forgery Prevention, qui sert de document évolutif retraçant cette vulnérabilité au fur et à mesure de son évolution. Si vous souhaitez vraiment approfondir vos connaissances en matière de sécurité, vous pouvez apprendre à vaincre cette menace et bien d'autres encore en consultant le Secure Code Warrior bloguer.

Vous pensez être prêt à mettre vos nouvelles connaissances en matière de défense à l'épreuve ? Jouez avec le démo gratuite de la plateforme Secure Code Warrior aujourd'hui.

웨비나 보기
시작하세요
더 알아보세요

아래 링크를 클릭하고 이 자료의 PDF를 다운로드하세요.

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 주기 전반에 걸쳐 코드를 안전하게 보호하고 사이버보안이 최우선 과제인 문화를 조성하도록 Secure Code Warrior . 애플리케이션 보안 담당자, 개발자, IT 보안 책임자 또는 보안 관련 업무에 종사하는 모든 분들을 위해, 저희는 귀사의 조직이 안전하지 않은 코드로 인한 위험을 줄일 수 있도록 돕습니다.

보고서 표시데모 예약하기
리소스 표시
공유하기:
링크드인 브랜드사회적x 로고
더 알고 싶으신가요?

공유하기:
링크드인 브랜드사회적x 로고
작가
야프 카란 싱
게시일: 2018년 12월 13일

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

공유하기:
링크드인 브랜드사회적x 로고

Contrairement aux attaques visant directement les opérateurs de sites Web ou d'applications, l'objectif de nombreuses attaques CSRF (Cross-Site Request Forgery) est de voler de l'argent, des biens ou des informations d'identification directement à un utilisateur. Cela ne signifie pas que les opérateurs de sites doivent ignorer les vulnérabilités du code CSRF, car en fin de compte, le remplacement des fonds volés, dans le cas d'une attaque purement monétaire, peut être la responsabilité du site d'hébergement par le code non sécurisé. Et si l'utilisateur ciblé perd ses informations d'identification ou voit son mot de passe modifié sans le savoir, un criminel pourrait être en mesure de faire des ravages en utilisant cette identité volée, en particulier si la victime dispose d'un accès privilégié.

Les attaques CSRF sont assez complexes et reposent sur plusieurs couches pour réussir. En d'autres termes, beaucoup de choses doivent se passer en faveur de l'attaquant pour que cela fonctionne. Malgré cela, ils constituent un vecteur d'attaque extrêmement populaire car une attaque réussie peut transférer de l'argent directement à un pirate informatique, ou le configurer pour qu'il puisse se déplacer sur un site en toute impunité. Si tout se passe comme prévu, l'utilisateur ciblé ne saura peut-être même jamais qu'il a été victime d'une attaque.

La bonne nouvelle, c'est qu'étant donné qu'il reste encore beaucoup à faire pour qu'une attaque de la CSRF fonctionne, il existe de nombreuses techniques défensives efficaces qui peuvent les arrêter.

À cette fin, nous aborderons trois aspects clés des attaques CSRF :

  • Comment ils fonctionnent
  • Pourquoi sont-ils si dangereux
  • Comment mettre en place des défenses pour les empêcher de refroidir.

Comment fonctionnent les attaques CSRF ?

Parce que les attaques CSRF réussies ont la capacité de voler directement de l'argent, des biens ou des informations d'identification à des utilisateurs ciblés, elles sont populaires malgré le travail considérable nécessaire pour les créer. Et comme ils sont souvent essayés sur différentes plateformes, ils ont acquis au fil des ans une variété de noms et de surnoms. Vous pouvez entendre des attaques CSRF appelées XSRF, Sea Surf, Session Riding, Cross-Site Reference Falgery ou Hostile Linking. Microsoft aime les qualifier d'attaques en un clic dans la plupart de sa documentation. Mais ce sont toutes des attaques CSRF, et les techniques pour les vaincre sont identiques.

Une attaque CSRF peut se produire si un utilisateur est connecté à un site faisant des affaires ou effectuant son travail. L'essentiel est que l'utilisateur soit connecté et authentifié activement sur un site Web ou une application. L'attaque est normalement lancée à partir d'un site Web secondaire ou d'un e-mail. Les attaquants utilisent souvent des techniques d'ingénierie sociale pour inciter les utilisateurs à cliquer sur un lien contenu dans un e-mail qui les redirige vers un site Web compromis contenant le script d'attaque.

Le site Web compromis contient un script qui demande au navigateur actif d'exécuter des commandes, généralement malveillantes, comme la modification du mot de passe d'un utilisateur ou le transfert d'argent sur un compte contrôlé par l'attaquant. Tant que l'utilisateur est authentifié, le site pensera que les commandes sont émises par l'utilisateur autorisé. Pourquoi ne le ferait-il pas ? L'utilisateur s'est déjà authentifié et a fourni les mots de passe nécessaires pour accéder au site. Ils peuvent même être situés à l'intérieur d'une zone géographique, assis correctement à leur terminal de bureau. S'ils souhaitent modifier leur mot de passe ou transférer des fonds, il n'y a aucune raison de ne pas croire que c'est eux qui en font la demande.

Si l'on analyse les éléments de l'attaque, on comprend pourquoi celle-ci est si difficile à réaliser pour l'attaquant. Pour commencer, l'utilisateur doit s'authentifier activement auprès du site sur lequel l'attaque a lieu. Si un e-mail contenant un script d'attaque arrive alors qu'un utilisateur a mis fin à sa session de navigation ou s'est déconnecté, l'attaque échoue.

L'attaquant est également obligé d'effectuer de nombreuses reconnaissances sur le site ciblé afin de savoir quels scripts ce site acceptera. Les attaquants ne peuvent pas voir l'écran de la victime, et tous les commentaires provenant du site Web seront adressés à la victime, et non à l'attaquant. À moins que l'attaquant ne soit en mesure de voir des preuves de l'efficacité de son attaque, comme l'apparition soudaine d'argent sur son compte, il ne saura même pas immédiatement si l'attaque a été couronnée de succès.

Dans la limite des paramètres difficiles, mais pas impossibles, liés à la connexion de l'utilisateur au moment de l'attaque et à la connaissance des scripts acceptés par le site ciblé, le code permettant d'exécuter une attaque CSRF peut être extrêmement simple, bien qu'il varie en fonction du site lui-même.

Supposons qu'une application bancaire ou financière utilise des requêtes GET pour transférer de l'argent, comme ceci :

ACCÉDEZ À http://bank.com/transferdo?acct=NancySmith12&amount=100 HTTP/1.1

Ce code enverrait une demande de transfert de 100$ à un utilisateur nommé NancySmith12.

Mais si l'utilisateur ciblé reçoit un e-mail, peut-être déguisé en celui d'un collègue, un script d'attaque CSRF peut être intégré au clic :

<a href="http://bank.com/transfer.do?acct=ShadyLady15&amount=100000">Pouvez-vous lire rapidement ce rapport trimestriel ? <a></a></a>

Si l'utilisateur ciblé tombait dans le piège du lien d'ingénierie sociale et cliquait dessus alors que la session du navigateur avec l'application financière était toujours ouverte, son navigateur demanderait à l'application d'envoyer 100 000$ sur le compte de ShadyLady15.

Le script pourrait même être caché dans une image invisible que l'utilisateur ne verrait pas, mais qui pourrait tout de même inciter le navigateur à effectuer la demande, comme suit :

<img src="http://bank.com/transfer.do?acct=ShadyLady15&amount=100000" width="0" height="0" border="0">

Le résultat est le même. ShadyLady15 reçoit 100 000$ sans que personne ne détecte l'attaque.

Pourquoi le CSRF est-il si dangereux ?

Les attaques CSRF sont populaires aujourd'hui pour la même raison que les attaques de rançongiciels continuent de se multiplier. Cela permet de faire très peu de compromis entre les agresseurs et l'argent de la victime. Lors d'une attaque par rançongiciel, les systèmes sont cryptés et les utilisateurs sont extorqués de l'argent pour déchiffrer ces données. Avec une attaque CSRF, le nombre d'étapes est encore plus court. Lorsqu'elles travaillent, les victimes envoient simplement de l'argent aux agresseurs sans le savoir.

Au-delà des attaques directes contre l'argent d'une victime ou les finances d'une entreprise, les attaques CSRF réussies peuvent être utilisées pour compromettre un réseau utilisant des utilisateurs valides. Imaginez si un attaquant pouvait utiliser un exploit CSRF pour modifier le mot de passe d'un administrateur. Ils pouvaient immédiatement utiliser ce mot de passe pour commencer à voler des données, percer des failles dans les défenses du réseau ou installer des portes dérobées.

Bien que cela demande beaucoup de travail et, dans une certaine mesure, de chance, une attaque CSRF réussie peut être comme gagner à la loterie pour les pirates, quel que soit leur objectif ultime. Lors de l'attaque d'un réseau, presque tous les autres types d'attaques nécessiteraient des mois de reconnaissance lente et lente, en essayant de rester hors du radar du personnel SIEM et de cybersécurité. En revanche, une seule attaque CSRF peut permettre de sauter plusieurs étapes de la chaîne des cyberattaques, ce qui leur permet de démarrer très près de leur objectif ultime.

Comment arrêter les attaques CSRF ?

Contrairement à la plupart des vulnérabilités, dans le cas des attaques CSRF, la faute ne vient pas vraiment du code, mais d'un exploit créé par les attaquants pour forcer un navigateur à effectuer des requêtes que l'utilisateur ne souhaite pas et dont il n'a peut-être même pas connaissance. Mais ils peuvent être vaincus.

L'une des meilleures méthodes consiste à demander aux développeurs d'ajouter un jeton CSRF à l'identité d'un utilisateur chaque fois qu'une nouvelle session est générée. Il doit être composé d'une chaîne de caractères uniques et aléatoires et être invisible pour les utilisateurs. Ajoutez ensuite la demande de jeton CSRF en tant que champ masqué aux formulaires qui sont vérifiés par le serveur chaque fois qu'une nouvelle demande est soumise. Les attaquants qui soumettent des demandes via le navigateur d'un utilisateur ne seront même pas au courant de l'existence du champ de jeton caché, et encore moins de quoi il s'agit, de sorte que toutes leurs demandes échoueront.

Une méthode encore plus simple, qui ne nécessite pas beaucoup de programmation, consiste à ajouter un défi Captcha à tout ce qui est sensible, comme les demandes de changement de mot de passe ou les ordres de transfert d'argent. Cela peut être aussi simple que de demander à un utilisateur de cliquer sur un bouton pour confirmer que le demandeur n'est pas un robot ou, dans ce cas, un script CSRF. Les attaquants ne seront pas en mesure de rédiger une réponse au défi, et les utilisateurs qui rencontrent soudainement un défi CAPTCHA sans avoir fait au préalable une demande de transfert d'argent sauront qu'il y a un problème. Il est également possible de générer un mot de passe à usage unique à l'aide d'un jeton tiers, tel qu'un smartphone, en fonction de la mesure dans laquelle l'organisation souhaite ralentir ses travaux au nom de la sécurité.

Enfin, bien que cela ne soit pas infaillible, de nombreux navigateurs comme Microsoft Edge ou Google Chrome disposent désormais de politique en matière de même origine restrictions mises en place pour bloquer les demandes provenant de n'importe qui sauf de l'utilisateur local. Forcer les utilisateurs à interagir avec votre site en utilisant les versions les plus récentes de ces navigateurs peut contribuer à intégrer une autre couche de sécurité CSRF sans aucune charge pour les équipes de développement.

Claquer la porte sur la CSRF

Avec un potentiel de paiement aussi élevé, les attaques CSRF ne disparaîtront probablement jamais complètement, mais nous espérons que vous avez appris pourquoi elles sont si persistantes et comment les bloquer définitivement de votre réseau.

Pour en savoir plus, vous pouvez consulter l'aide-mémoire de l'OWASP Cross-Site Request Forgery Prevention, qui sert de document évolutif retraçant cette vulnérabilité au fur et à mesure de son évolution. Si vous souhaitez vraiment approfondir vos connaissances en matière de sécurité, vous pouvez apprendre à vaincre cette menace et bien d'autres encore en consultant le Secure Code Warrior bloguer.

Vous pensez être prêt à mettre vos nouvelles connaissances en matière de défense à l'épreuve ? Jouez avec le démo gratuite de la plateforme Secure Code Warrior aujourd'hui.

목차

PDF 다운로드
리소스 표시
더 알고 싶으신가요?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

더 알아보세요

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 주기 전반에 걸쳐 코드를 안전하게 보호하고 사이버보안이 최우선 과제인 문화를 조성하도록 Secure Code Warrior . 애플리케이션 보안 담당자, 개발자, IT 보안 책임자 또는 보안 관련 업무에 종사하는 모든 분들을 위해, 저희는 귀사의 조직이 안전하지 않은 코드로 인한 위험을 줄일 수 있도록 돕습니다.

데모 예약하기Télécharger
공유하기:
링크드인 브랜드사회적x 로고
자원 센터

시작하는 데 도움이 되는 자료

더 많은 게시물
자원 센터

시작하는 데 도움이 되는 자료

더 많은 게시물