XSS
Étymologie :
De l'anglais XSS est l'abréviation Cross-site Scripting.
Définition :
Le cross-site scripting est un type de faille de sécurité des sites web permettant d'injecter du contenu dans une page, provoquant ainsi des actions sur les navigateurs web visitant la page. Les possibilités des XSS sont très larges puisque l'attaquant peut utiliser tous les langages pris en charge par le navigateur et de nouvelles possibilités sont régulièrement découvertes notamment avec l'arrivée de nouvelles technologies comme HTML5. La faille XSS existe depuis les années 2000. L'exemple le plus célèbre lié à sa mise en oeuvre date de 2005, le hacker Samy Kamkar exploita une faille du réseau social MySpace qui lui permit d'obtenir plus d'un million d'amis en seulement une vingtaine d'heures.
Fonctionnement
Le Cross-site Scripting (XSS) implique l'exploitation d'une vulnérabilité d'une plateforme web afin d'injecter un script malveillant à l'insu des utilisateurs. Habituellement, ce type d'attaque se base sur le langage JavaScript, mais il est également possible d'utiliser d'autres langages de programmation côté client. Les pirates ciblent principalement des sites web dont les fonctionnalités présentent des failles de sécurité, telles que les formulaires de connexion, les barres de recherche, les zones de commentaires, entre autres.
Étant donné que le code JavaScript s'exécute directement sur le navigateur de l'utilisateur ciblé, il peut exposer des informations sensibles de l'internaute authentifié, mettant ainsi en danger la session. Cela permet aux pirates de cibler les administrateurs de sites web et de potentiellement compromettre la sécurité des sites eux-mêmes.
Selon la méthode d'injection du code, le contenu malveillant peut ne pas être directement présent sur la page authentique, mais plutôt agir comme un élément de transition qui n'est activé que lors de l'exploitation. Cette situation peut créer l'illusion que le site web d'origine est compromis, alors qu'en réalité, ce n'est pas le cas.
Il existe diverses méthodes pour déclencher une attaque XSS. Tout d'abord, elle peut être provoquée de manière automatique lors du chargement de la page ou lorsque l'utilisateur interagit avec certains éléments de la page, tels que des liens.
Le Cross-site Scripting peut également être réalisé de manière directe, par exemple, en utilisant un message électronique. Dans certains cas, une attaque XSS ne vise pas une victime spécifique, le pirate exploite simplement une vulnérabilité dans un programme ou un site web, espérant qu'un visiteur tombe dessus.
En fonction de la grandeur de la frappe, la faille XSS peut engendrer :
- la compromission des comptes utilisateurs ;
- l’activation des trojans ;
- la modification de page (dans le but de duper les utilisateurs et les conduire à divulguer des renseignements confidentiels) ;
- la révélation des cookies de session (qui permet à un pirate d’usurper l’identité d’un utilisateur et d’exploiter leur compte personnel).
La réussite d’une attaque XSS peut engendrer des impacts dévastateurs pour la réputation d’une activité en ligne ou encore la relation avec les clients. Inopportunément, les failles à l’origine de ces attaques sont très répandues.
Les différents types d'attaques :
Selon leur objectif, les pirates ont la possibilité d’utiliser les scripts intersites de différentes façons :
Scripts intersites sauvegardés (persistants)
Les attaques par XSS stockées se manifestent lorsqu’un pirate dépose leur charge utile dans un serveur affecté, ce qui conduit le site à propager un code malveillant aux autres internautes.
Il s’agit là du type de scripting intersite le plus dangereux et le plus utilisé, car cette technique ne demande pas une action initiale venant du hacker et qu’elle est capable de compromettre plusieurs internautes par la suite. Les champs de profil comme le nom d’utilisateur ou l’adresse électronique qui sont stockés sur le serveur et édités sur la page du compte sont des exemples de failles par script intersite stocké.
Scripts intersites réfléchis
Les failles XSS réfléchies se développent au moment où la charge utile est gardée dans les informations envoyées par le navigateur au serveur.
À titre d’exemple, un pirate peut déposer un script malveillant dans les renseignements envoyés par le formulaire de recherche ou de contact d’un site web. Un cas très courant de scripting intersite réfléchi est le formulaire de recherche dans lequel les internautes envoient leur demande au serveur, et ils sont les seuls à trouver le résultat.
Scripteur intersite autonome
L’auto-scripting intersite se présente lorsque les hackers exploitent une faiblesse qui requiert un contexte particulièrement spécifique et des changements manuels. La seule victime possible est soi-même.
Les transformations spécifiques incluent généralement des éléments comme les valeurs des cookies ou encore l’association de vos propres données à une charge utile.
Cross-site scripting aveugle
Les attaques XSS aveugles se manifestent quand un attaquant n’est pas capable d’en apercevoir le résultat. Dans ces failles, la faiblesse est souvent située sur une page à laquelle seuls les internautes autorisés ont accès.
Le cas où un nom d’utilisateur est vulnérable au Cross-Site scripting, mais seulement depuis une page d’administration dédiée aux usagers de l’administration est un parfait exemple de ce type d’attaque.
Scripts intersites basés sur le DOM
Les attaques par XSS basées sur le DOM se constituent quand ce n’est pas le serveur en soi qui est vulnérable, mais le JavaScript de la page.
Comme le langage est utilisé pour donner plus d’interactivité à la page, les arguments dans l’URL peuvent être utilisés pour changer la page suite au chargement. En transformant le DOM quand il ne nettoie pas les valeurs qui proviennent de l’internaute, les pirates informatiques sont capables d’associer à la page un code malveillant.
Le cas d’une faille XSS basée sur le DOM est le moment où la plateforme web transforme le choix de la langue par défaut pour celle qui est offerte dans l’URL.