Fondamentaux
Sur le Web, le mot d’ordre est prudence. Prudence car le cyber-danger est partout. Même parfois sur un site légitime, que vous avez l’habitude de fréquenter. Il est tout à fait possible qu’un cybercriminel ait pu le corrompre et s’en serve maintenant comme un vecteur pour ses attaques.
Dans cet article, nous évoquerons les attaques XSS, 3ème faille de cybersécurité sur Internet. Nous verrons les dangers qu’elles représentent et les solutions pour s’en protéger.
Qu’est-ce qu’une attaque XSS ?
Une attaque XSS (Cross-Site Scripting) est un pratique cybercriminelle consistant à injecter un code malveillant dans un site Web légitime. Le code est ensuite repris par les navigateurs qui l’exécutent sans pouvoir le différencier des autres scripts du site.
Il faut bien comprendre que l’attaque XSS n’en a pas après le site qu’elle infecte, mais après ses utilisateurs. Une fois le script malveillant intégré au code du site, le cybercriminel peut avoir accès aux données sensibles enregistrées dans les cookies ou diffuser un malware, entre autres.
Ces attaques en ligne sont très difficiles à repérer car elles utilisent un site Web fiable comme hôte. Le certificat du site Web reste donc valide et vérifié, et rien ne permet à première vue de constater la présence du script malveillant.
Comment fonctionne une attaque XSS ?
Une XSS Attack consiste à inscrire un script malveillant dans le code source HTML d’un site pour que ce dernier le renvoie à ses utilisateurs. Pour ce faire, les hackers utilisent la plupart du temps le langage JavaScript et ciblent des sites dits “ouverts”, c’est-à-dire avec des entrées accessibles comme une barre de recherche ou une zone de commentaires.
Une fois le script intégré au code du site, le hacker peut décider d’infecter passivement les utilisateurs en manipulant les hyperliens, ou de manière plus directe en envoyant un e-mail de phishing depuis le site.
L’attaque XSS peut également servir pour détourner des données personnelles en divulguant les cookies, ou en enregistrant toutes les frappes de l’utilisateur. Le script peut être utilisé pour installer un trojan sur l’ordinateur des utilisateurs qui tombent dans le piège.
Quels sont les types d’attaques XSS ?
Il existe 3 principaux types de XSS Attacks classés selon la manière dont s’exécute le code malveillant.
Attaque XSS stockée (XSS persistants)
On parle d’attaque XSS stockée quand le site Web enregistre et affiche le contenu du cybercriminel. La voie d’accès la plus courante pour ce genre d’attaque est la partie commentaires des blogs ou les forums. Le hacker se sert de ces entrées pour déposer des charges utiles XSS qui seront diffusées par le site.
Attaque XSS reflétée (XSS reflétés)
Ce type d’attaque est dit non-persistant, ce qui signifie qu’une nouvelle charge utile XSS est nécessaire pour chaque utilisateur. Il consiste à utiliser des techniques d’ingénierie sociale pour pousser l’utilisateur à effectuer une demande HTTP en réponse de laquelle le site lui délivrera la charge XSS.
Attaque XSS basée sur le DOM (Document Object Model)
Avec ce type d’attaque, la charge utile XSS est stockée sur le DOM, c’est à dire pas sur le HTML, et surtout, dans la partie utilisateur. Ainsi, elle ne se trouve pas directement sur le serveur du site Web et est, par conséquent, presque indétectable par les WAF (pare-feu d’application).
Qui sont les cibles des attaques XSS ?
Une attaque XSS peut ou bien cibler un utilisateur particulier d’un site Web, ou bien fonctionner comme un piège et cibler n’importe-quel utilisateur.
Dans le cas d’une attaque ciblée, le cybercriminel aura recours à des pratiques d’ingénierie sociale comme les e-mails de phishing (hameçonnage) pour pousser la victime à effectuer une requête qui active la charge utile XSS.
Pour une attaque plus générale, les charges utiles XSS sont simplement déposées sur le site et activées quand un utilisateur passe sa souris ou clique dessus. Dans certains cas, l’attaque XSS vise simplement à récupérer les données de tous les utilisateurs pour ensuite alimenter d’autres attaques, comme des attaques de phishing, ou des connexions frauduleuses.
Au niveau des sites Web, les cybercriminels vont davantage viser les sites présentant des failles propices à l’installation de scripts malveillants. La première faille pour un site ou une application est la reproduction des entrées utilisateurs sans passer par une étape de vérification ou d’encodage.
De manière plus générale, toutes les entrées utilisateurs peuvent servir à l’injection d’un script malveillant dans le cadre d’une attaque XSS.
Quelles sont les conséquences d’une XSS Attack ?
Pour l’utilisateur, les conséquences d’une attaque XSS peuvent être la divulgation involontaire d’informations confidentielles (contenu de la frappe, historique de navigation, mots de passe et identifiants, informations personnelles identifiables …), ou l’installation involontaire de différents malwares.
Les attaques XSS sont également des vecteurs pour des attaques de phishing ou par le biais de trojans.
Pour le site Web, les conséquences peuvent également être dévastatrices : baisse du référencement sur les moteurs de recherche en raison d’une mauvaise expérience utilisateur, perte de fréquentation et de confiance, mauvaise image de la marque, etc.
Comment se protéger d’une attaque XSS ?
Il est très difficile de parfaitement protéger son site Web des attaques XSS. Il faut commencer par effectuer un audit de sécurité pour identifier les failles qui sont les plus propices à l’injection d’un script malveillant afin de les traiter en priorité.
Pour cela, l’intervention d’un hacker éthique peut être utile car il sera le plus à même d’alerter le service de cybersécurité sur les points problématiques dans l’architecture du site.
Il existe cependant des pratiques générales qui permettent de limiter le risque d’attaque XSS sur la majorité des sites :
- Sensibiliser les développeurs
Les développeurs Web doivent prendre en compte la potentialité d’attaques XSS pour limiter les failles dans l’architecture qu’ils mettent au point.
- Filtrer les entrées
Toutes les entrées sur le site Web, même celles de membres enregistrés, doivent être vérifiées et authentifiées avant d’avoir accès aux sorties.
- Utiliser un code robuste
Plus le code et les séquences d’échappement URL, JavaScript, CSS et HTML sont robustes, moins les risques d’attaques XSS sont importants.
- Nettoyer le HTML
Un HTML non sain est une porte d’entrée pour les hackers. Il existe des bibliothèques destinées à l’assainissement du HTML comme HtmlSanitizer.
- Vérifiez la présence de charge utile XSS
Même en étant prudent, vous n’êtes jamais à l’abri d’une attaque XSS. C’est pourquoi il est recommandé de régulièrement scanner votre site à la recherche de tout script malveillant.
Pour résumer, il n’existe pas de méthode miracle pour se protéger des attaques XSS, mais sensibiliser les utilisateurs comme les développeurs, et s’assurer de la santé du code HTML permet de limiter grandement les risques.
Les attaques XSS en 4 informations clés :
- Une attaque XSS est l’injection d’un script malveillant dans le code d’un site fiable.
- Elle permet ensuite de s’en prendre aux utilisateurs.
- La plupart des attaques XSS utilisent les entrées utilisateurs pour infecter un site.
- Pour protéger son site, il faut interroger les failles, chercher à les combler, s’assurer que le code est nettoyé régulièrement, et effectuer des scans de sécurité.