Qu’est-ce qu’un script intersite (XSS) ?
Un script intersite (XSS) est une attaque par injection de code, dans le cadre de laquelle un cyberadversaire insère un code malveillant dans un site web légitime. Le code s’exécute ensuite sous la forme d’un script infecté dans le navigateur web de l’utilisateur, permettant ainsi au cyberattaquant de voler des informations sensibles ou d’usurper l’identité de l’utilisateur.
Les forums web, les groupes de discussion, les blogs et autres sites web qui permettent aux utilisateurs de publier leur propre contenu sont les plus exposés aux attaques XSS. À moins que l’application web n’examine, ne vérifie et ne code les saisies en entrée, tout script malveillant inclus dans le code sera automatique exécuté par les navigateurs des autres utilisateurs. Ce script peut ensuite accéder aux cookies, aux jetons de session ou à d’autres informations sensibles de l’utilisateur conservés par le navigateur et utilisés sur ce site. Il peut même réécrire le contenu de la page web infectée dans le cadre d’attaques plus avancées.
En raison de leur capacité d’évitement, les attaques sans fichier et basées sur des scripts, comme les scripts intersites, se sont multipliées ces dernières années. Ces attaques, qui contournent facilement les antivirus et pare-feux traditionnels, sont relativement simples à exécuter. Il est par conséquent essentiel que les entreprises incluent la détection et la prévention des scripts intersites dans leur stratégie de cybersécurité globale pour protéger les visiteurs de leur site web et réduire le risque d’atteinte à leur réputation.
VOUS SOUHAITEZ GARDER UNE LONGUEUR D'AVANCE SUR LES CYBERADVERSAIRES ?
Téléchargez le Global Threat Report 2023 pour découvrir les tendances observées par nos équipes chez les cyberpirates en matière de techniques, tactiques et procédures.
TéléchargerAttaques XSS
Les attaques XSS exploitent les vulnérabilités de sécurité de sites web de confiance pour distribuer du code malveillant à d’autres utilisateurs.
Bien que relativement fréquentes, ces attaques ne constituent pas une priorité pour la communauté de la cybersécurité en raison de leur impact relativement limité. Comme le script malveillant affecte uniquement les interactions de l’utilisateur avec le site infecté, l’activité du cyberattaquant est limitée à la session en cours. En outre, la plupart des attaques utilisent le langage JavaScript, ce qui n’octroie au cybercriminel qu’un accès limité au système d’exploitation de l’utilisateur et aux informations personnelles stockées ailleurs sur le terminal.
Cela dit, les attaques XSS peuvent compromettre les informations d’un utilisateur présentes sur un site infecté. Le cyberattaquant peut ainsi capturer les identifiants, les mots de passe, les informations de paiement et autres données sensibles de l’utilisateur. Il peut également se faire passer pour l’utilisateur et disposer ainsi des mêmes possibilités d’action qu’un utilisateur légitime sur ce site. Les attaques de ce type peuvent avoir des répercussions considérables si le site autorise les visiteurs à effectuer ou à modifier des transactions ou à changer les informations de compte, notamment les coordonnées.
Les attaques XSS peuvent également constituer la première étape ou l’élément central d’une attaque plus avancée. Un cyberadversaire peut, par exemple, exploiter les informations collectées pendant une attaque XSS pour informer les tactiques d’ingénierie sociale utilisées dans des attaques de phishing ou par usurpation d’identité. Ces activités peuvent être à l’origine de problèmes de sécurité plus graves, tels que des attaques de logiciels malveillants, de ransomwares ou de chevaux de Troie.
Types d’attaques XSS
On distingue trois grands types d’attaques XSS :
- Attaque XSS reflétée ou non persistante : le script malveillant est exécuté dans le cadre d’une requête HTTP active et est renvoyé par le serveur web à l’utilisateur.
- Attaque XSS stockée ou persistante : le script malveillant est enregistré de manière permanente dans la base de données de l’application web, comme le journal des visiteurs, un forum web ou un champ de commentaire.
- Attaque XSS basée sur le DOM : la vulnérabilité de sécurité est présente dans le code côté client, c’est-à-dire le code exécuté dans le navigateur à la place du code côté serveur.
Attaque XSS reflétée ou non persistante
Il s’agit du type d’attaque XSS le plus simple : une application web reçoit des données provenant d’une requête HTTP et répond immédiatement, sans valider ni coder les données. Comme l’application ne traite pas les données, le cyberattaquant peut facilement lancer une attaque basée sur un script contre d’autres utilisateurs.
Dans une attaque reflétée, le script injecté se présente sous la forme d’un message d’erreur, d’un résultat de recherche ou d’une action similaire via un lien malveillant. Une fois activé, ce lien exécute le script, ce qui permet au code injecté d’atteindre le site vulnérable et d’être renvoyé au navigateur de l’utilisateur. Comme le navigateur considère le site comme une source de confiance, il exécute le code. Le script exécute ensuite toutes les actions à la disposition de l’utilisateur et capture toutes les données transmises par l’utilisateur pendant cette session.
Attaque XSS stockée ou persistante
Dans une attaque XSS stockée, ou persistante, une application web partage des données provenant d’une source non fiable ou non vérifiée dans des réponses HTTP ultérieures. Le script injecté est enregistré de façon définitive sur les serveurs cibles, dans une base de données, une publication dans un groupe de discussion, un commentaire ou tout autre emplacement. Si le site ne traite pas les données soumises, le cyberattaquant peut facilement saisir un contenu intégrant un script malveillant qui infectera d’autres utilisateurs. La victime récupère le script malveillant depuis le serveur lorsqu’elle demande les informations stockées.
Attaque XSS basée sur le DOM (Document Object Model)
Il s’agit d’une attaque XSS assez rare. Contrairement aux deux autres types d’attaques (attaques XSS reflétées et persistantes), qui ciblent le code côté serveur, une attaque XSS basée sur le DOM exploite des vulnérabilités de sécurité sur le code côté client ou le code exécuté dans le navigateur. Dans ce type d’attaque, une application web traite de manière non sécurisée les données JavaScript provenant d’une source non fiable. Les attaques XSS basées sur le DOM se produisent toujours en JavaScript étant donné qu’il s’agit du seul langage compris par tous les navigateurs.
Autres méthodes de classification des scripts intersites
Notez que ces trois types de scripts intersites, bien que distincts, ne sont pas exclusifs. Ces catégories peuvent se chevaucher dès lors que les cyberadversaires combinent des éléments de deux de ces types d’attaques dans une même campagne.
C’est pourquoi la communauté de la cybersécurité désigne les attaques XSS en fonction de l’endroit où le code est exploité, côté serveur ou client, et parle d’attaque XSS serveur ou client.
Comment fonctionne un script intersite ?
Comme expliqué ci-dessus, le mécanisme d’une attaque XSS dépend du type d’attaque déployé, mais la plupart suivent le même processus :
- Le cyberattaquant identifie un emplacement et une méthode pour l’injection de code malveillant dans une page web. Pour ce faire, le site web doit permettre aux utilisateurs d’ajouter du contenu à la page par le biais de commentaires, de publications ou de champs de contact. Si le cyberattaquant vise une cible précise, il utilisera des tactiques d’ingénierie sociale, comme le phishing et l’usurpation d’identité, pour encourager l’utilisateur à se rendre sur le site en question. Sinon, il attendra qu’un utilisateur quelconque découvre le code.
- La victime visite le site web contenant le code injecté. Le terminal utilisé par la victime accepte et exécute le script infecté, qu’il considère comme faisant partie du code source d’un site de confiance. Comme le code n’est pas visible et que la plupart des internautes ne comprennent pas les langages de programmation courants, comme JavaScript, il leur est difficile de détecter les attaques XSS.
Pourquoi les cybercriminels ont-ils recours à des attaques XSS ?
Les attaques XSS ont généralement pour but de voler les cookies d’un utilisateur. Grâce à ces informations stockées, le cyberattaquant peut se faire passer pour sa cible sur ce site et disposer ainsi des mêmes possibilités d’action que l’utilisateur légitime. Il peut également recueillir des données personnelles précieuses, comme des identifiants de connexion, des mots de passe, des informations de paiement et d’autres informations sensibles, qui lui faciliteront la tâche au moment de lancer d’autres attaques utilisant des techniques d’ingénierie sociale. Le site web lui-même peut également être ciblé. Dans ce cas, le cyberadversaire utilisera son code pour réécrire ou modifier le contenu de la page web.
Différentes approches XSS
Une attaque XSS peut se produire partout où une requête HTTP peut se frayer un chemin jusqu’à la sortie HTML. Voici une liste des tactiques courantes utilisées par les cyberattaquants dans le cadre d’une attaque XSS :
- Utilisation d’une balise <script> pour référencer, insérer ou incorporer un code JavaScript malveillant
- Utilisation d’attributs d’événements JavaScript, tels que « onload » et « onerror », dans différentes balises
- Distribution d’une charge active XSS dans la balise <body> par le biais des attributs d’événements JavaScript
- Exploitation de balises <img>, <link>, <div>, <table>, <td> ou <object> non sécurisées pour référencer un script malveillant
- Utilisation de la balise <iframe> pour incorporer une page web dans la page existante
Quels sont les langages ciblés par les attaques XSS ?
Toute page ou application web qui utilise des saisies d’utilisateurs non nettoyées s’expose à une attaque XSS. Cela signifie que les scripts intersites peuvent être écrits dans n’importe quel langage de développement, notamment HTML, VBScript, ActiveX, Flash et même CSS. Cela dit, la plupart sont exécutés en JavaScript, dans la mesure où il s’agit du langage de codage le plus populaire.
Quels sont les risques associés à une attaque XSS ?
Les attaques XSS peuvent avoir des répercussions majeures pour les victimes. Dans les cas les plus extrêmes, le cyberattaquant peut utiliser les cookies de l’utilisateur pour usurper son identité. Le code peut également servir à voler des fichiers et des données ou à installer un logiciel malveillant sur le terminal.
Les attaques XSS côté serveur peuvent par ailleurs porter préjudice à la réputation de l’entreprise hôte. Par exemple, en modifiant le contenu du site d’une entreprise, les cyberattaquants peuvent diffuser de fausses informations sur les pratiques commerciales ou les activités de l’entreprise. Ils peuvent également manipuler le contenu du site web pour fournir des instructions incorrectes aux visiteurs. Une compromission de ce type est particulièrement dangereuse si les pirates informatiques parviennent à prendre le contrôle de sites web ou de ressources d’agences gouvernementales en situation d’urgence et communiquent au grand public de fausses informations lors de crises.
Malheureusement, les failles XSS peuvent être difficiles à identifier, en particulier si l’utilisateur ne maîtrise pas du tout la programmation informatique. Même les développeurs les plus expérimentés vérifient rarement le code des sites de confiance. Une fois le code malveillant injecté dans l’application, il est généralement très difficile de l’éliminer s’il s’agit d’une attaque XSS stockée.
Comment se prémunir des scripts intersites ?
Il est essentiel de vérifier que votre entreprise n’est pas exposée à des attaques XSS. Les attaques basées sur des scripts et autres attaques sans fichier se sont multipliées ces dernières années en raison de leur capacité à échapper aux outils de sécurité de nouvelle et d’ancienne génération, y compris les antivirus et les pare-feux.
L’équipe chargée de la sécurité du site web de l’entreprise doit travailler de concert avec l’équipe de cybersécurité ou un partenaire de cybersécurité de confiance pour évaluer le risque d’attaque XSS du site de l’entreprise.
Pour assurer la sécurité et la fiabilité d’un site web côté client et côté serveur, il peut être utile de recourir à une solution de gestion des vulnérabilités qui recherche en continu les vulnérabilités du site. Pour ce faire, vous pouvez faire appel à un expert SecOps, généralement un membre de l’équipe de cybersécurité, qui collaborera avec les développeurs web et d’autres membres de l’équipe web pour mettre en place de bonnes pratiques de sécurité en matière de développement et de maintenance des sites web. Cet expert peut également fournir des renseignements sur les points faibles ou les vulnérabilités critiques susceptibles d’exposer votre site web à des attaques XSS.
Vous pouvez également mettre en place, en collaboration avec votre équipe de cybersécurité, les pratiques suivantes pour créer un environnement web sûr et fiable :
- Réalisez un test d’intrusion manuel dans les zones les plus susceptibles d’être exploitées.
- Limitez la capacité des utilisateurs à ajouter du contenu au site web et aux autres ressources de l’entreprise, comme les forums, les blogs ou les groupes de membres.
- Si vous autorisez les saisies des utilisateurs, filtrez tous les contenus entrants au moyen de paramètres stricts. Pensez également à coder les données en sortie.
- Empêchez l’injection de code malveillant dans des réponses qui ne devraient pas contenir de code HTML ou JavaScript.
- Proposez une formation continue à la cybersécurité et des possibilités de perfectionnement à votre équipe informatique, ainsi qu’aux développeurs, programmeurs et ingénieurs informatiques, afin de les sensibiliser aux risques posés par les scripts intersites et de leur permettre d’intervenir de manière adéquate en cas d’attaque XSS.