Qu'est-ce que le Cross-Site Scripting (XSS) ?
Les attaques de type cross-site scripting (XSS) injectent des scripts malveillants dans des sites web de confiance afin de cibler les visiteurs et d'influencer leurs interactions futures. Bien que les attaques XSS existent depuis longtemps (elles ont été identifiées pour la première fois en 1999), elles restent une forme populaire de cyberattaque. En fait, XSS a été la vulnérabilité Cloud la plus découverte dans le rapport 2024 Cloud Threat Landscape Report d'IBM.
Les attaques XSS utilisent les failles de sécurité dans les applications Web pour injecter un code malveillant, le plus souvent un code JavaScript côté client, à l'insu du propriétaire du site ou du visiteur. Les sites de confiance disposant des informations d'identification appropriées, vérifiées par le navigateur de la victime, servent involontairement de mécanisme de diffusion de scripts malveillants provenant de sources non fiables.
Ces scripts s'exécutent ensuite sur les navigateurs des victimes, compromettant la façon dont elles interagissent avec le site application. Cela peut se produire par le biais de plusieurs méthodes, notamment la défiguration du site Web, le détournement de leur session, l'injection de logiciels malveillants et phishing.
Comment fonctionnent les attaques XSS
Un processus d'attaque XSS simplifié en trois étapes se présente comme suit :
- L'attaquant identifie les sites web vulnérables pour les cibler et y injecter un code malveillant. Par exemple, si un site ne valide pas toutes ses entrées.
- Une fois que le code malveillant se trouve sur le site web, l'attaquant attend passivement que des visiteurs peu méfiants l'exécutent ou envoie de manière proactive le lien du site compromis à des victimes potentielles. Cela peut se faire par le biais de messages sur les médias sociaux ou de courriels, en les incitant à visiter la page.
- Enfin, une fois que les visiteurs du site ont exécuté le code et sont devenus des victimes, l'attaquant peut manipuler les interactions futures de différentes manières en fonction de son objectif.
Les attaques XSS contournent la politique d'origine du navigateur et cachent leurs scripts malveillants dans un site web de confiance. Les navigateurs vérifient si les sites web sont sécurisés et s'ils disposent des informations d'identification appropriées. Cependant, ils ne peuvent pas vérifier si d'autres scripts ont été injectés dans le site. Par conséquent, une mauvaise sécurité du siteapplication peut exposer les utilisateurs à des scripts malveillants aux conséquences graves.
L'impact des attaques XSS
Selon le type d'attaque et les objectifs du pirate, les XSS peuvent avoir des conséquences diverses pour le site application et ses utilisateurs. Pour les personnes qui visitent le site web ou qui utilisent le site application, les attaques XSS peuvent avoir des conséquences :
- Défiguration de sites web : Manipulation de l'image du site web ou ajout de nouveaux éléments par le biais de modifications HTML ou CSS afin de modifier ce que voit le visiteur. Les attaquants peuvent leur montrer quelque chose de complètement différent du site web original pour les inciter à faire quelque chose qu'ils ne feraient pas normalement.
- Détournement de session : En exécutant son code malveillant sur le navigateur de la victime, l'attaquant peut accéder aux cookies pour détourner la session. Cela leur permet de prendre le contrôle de leur compte sur le site application, d'effectuer des actions non autorisées et d'accéder à des informations sensibles stockées dans le navigateur.
- Injection de logiciel malveillant : Les scripts malveillants de l'attaquant injectent logiciel malveillant dans le navigateur du visiteur, qui peut alors s'échapper pour s'exécuter sur son système en mode natif. Ce logiciel malveillant peut avoir un certain nombre d'objectifs différents, notamment des enregistreurs de frappe qui capturent les identifiants de connexion, des logiciels de minage de crypto-monnaie ou la prise de contrôle du système dans le cadre d'un réseau de zombies plus large qui sera utilisé dans une autre attaque DDoS.
- hameçonnage : redirection des visiteurs vers un site de hameçonnage avec de faux champs de saisie pour capturer les informations d'identification des utilisateurs et prendre le contrôle de leurs comptes.
Si les visiteurs sont généralement la cible principale des attaques XSS, celles-ci ont également un impact sur le site application. Les violations de données créent des problèmes de conformité qui entraînent des amendes potentielles, des conséquences juridiques et des atteintes à la réputation. La défiguration d'un site web peut conduire les attaquants à afficher un contenu offensant ou malveillant, ce qui nuit également à la réputation de l'entreprise.
En outre, si l'attaque XSS compromet des victimes qui ont un accès privilégié, elle peut conduire à ce que des pirates contrôlent les fonctionnalités du site application et à des violations de données plus importantes.
Types d'attaques XSS
Scripting croisé réfléchi
On parle de XSS réfléchi lorsque le site application Web "renvoie" un code malveillant à l'utilisateur, le plus souvent par l'intermédiaire de champs de saisie vulnérables. Par exemple, si un site web ne vérifie pas les entrées fournies par le paramètre URL, les attaquants peuvent injecter des scripts malveillants en les intégrant dans le lien. Les utilisateurs qui cliquent sur ce lien exécutent alors involontairement le script, exposant ainsi leur navigateur à l'attaquant. Le XSS réfléchi ne se produit que lorsque le lien est cliqué. Il s'agit d'une forme non persistante de scripts intersites.
Scripts intersites stockés
Le XSS stocké est une forme persistante de script cross-site qui continue à infecter de nouveaux utilisateurs jusqu'à ce que le propriétaire du site web détecte la menace et y réponde. Dans ces attaques, des sources non fiables cachent leur code sur le site web en utilisant des champs de saisie stockés en permanence, tels que les sections de commentaires. Si le site ne valide pas les entrées de la section des commentaires, les attaquants peuvent intégrer des balises HTML qui s'exécutent lorsque les nouveaux visiteurs chargent la page.
Scripting intersite basé sur le DOM
Le XSS basé sur le DOM modifie et injecte du code dans le modèle objet du domaine (DOM) sur le navigateur du visiteur. Il n'affecte que le côté client, la réponse sur le serveur reste la même. Il s'agit par exemple de sites web qui écrivent des données non structurées à partir de l'URL dans la page web.
Bonnes pratiques pour identifier la vulnérabilité XSS et prévenir les attaques
En suivant les meilleures pratiques de sécurité du site application, vous pouvez protéger les visiteurs de votre site web et préserver votre réputation.
Identifier la vulnérabilité de l'application Web
La première étape consiste à vérifier que votre site application Web n'est pas vulnérable aux attaques XSS. Vous pouvez le faire manuellement ou à l'aide d'outils spécialisés :
- Examen manuel du code : Effectuez une analyse du code pour identifier les points faibles où de mauvais acteurs pourraient injecter des scripts malveillants dans votre site. En outre, vous pouvez utiliser des charges utiles d'attaque pour déterminer s'il est possible d'exécuter des scripts bénins sur les navigateurs qui visitent votre site.
- Scanners automatisés de vulnérabilité web : Des outils sont disponibles pour scanner les applications Web et identifier les vulnérabilités XSS. Ceux-ci utilisent généralement l'analyse statique et dynamique de JavaScript.
Valider l'entrée
Votre site application Web nécessite des procédures de validation d'entrée robustes afin d'assainir toutes les entrées des utilisateurs. Voici quelques exemples :
- Valider que les URL ont un protocole sûr.
- Vérifier que les valeurs numériques fournies par l'utilisateur ne contiennent que des entiers.
- Veiller à ce que les entrées contiennent le jeu de caractères attendu.
En bloquant les entrées non valides, vous contribuez grandement à empêcher les sources non fiables d'injecter du code dans votre site web.
Encoder la sortie
L'étape suivante consiste à coder toutes les données contrôlées par l'utilisateur et écrites sur le site web. L'encodage requis dépend du contexte et peut nécessiter de multiples combinaisons, telles que des couches d'encodage Javascript et HTML.
Appliquer la politique de sécurité du contenu
Si ces deux techniques préventives échouent, les politiques de sécurité du contenu (CSP) permettent d'atténuer l'impact d'une attaque XSS. Ils limitent le chargement des scripts externes, ce qui vous permet de spécifier qu'ils ne se chargent qu'à partir de la même origine. En appliquant correctement la CSP, vous pouvez réduire le succès des attaques XSS, même si l'attaquant a pu injecter le code malveillant.
Définir les cookies HTTP-only
En signalant les cookies HTTP-only, les cookies de session ne peuvent être capturés que par des scripts côté client. L'accès au code JavaScript est ainsi bloqué, ce qui réduit considérablement les risques de détournement de session par XSS.
Mettre en place un Pare-feu pour applications Web
Enfin, la mise en œuvre d'un Pare-feu pour applications Web (WAF ) permet de surveiller et de filtrer le trafic, ce qui vous permet de développer et d'appliquer des politiques de sécurité ciblant les attaques XSS. Il s'agit notamment d'analyser les URL et autres champs de saisie afin d'identifier et de bloquer les codes malveillants renvoyés aux utilisateurs. De nombreux WAFs intègrent désormais une technologie d'IA et de machine d'apprentissage pour analyser les informations contextuelles et repérer les tentatives de contournement des politiques de sécurité à l'aide de variantes inconnues d'attaques XSS.
Protégez votre application Web avec Check Point WAF de Check Point
Check Point WAF de Check Point est le premier Pare-feu pour applications Web qui intègre l'IA contextuelle pour sécuriser vos applications contre les menaces connues et inconnues. Découvrez Check Point WAF, et notamment comment le déployer en quelques minutes avec le WAF as a Service (WAFaaS).
