L'attaque par injection de code intersite (XSS) consiste à injecter des scripts malveillants dans des sites web par ailleurs fiables et sûrs. Lorsqu'un attaquant envoie du code malveillant, généralement sous forme de script côté navigateur, à un autre utilisateur via une application web, on parle d'attaque XSS. Les applications web qui ne valident ni ne chiffrent les entrées utilisateur sont vulnérables à ces attaques en raison de la grande diversité de leurs failles de sécurité.
Un script malveillant peut être envoyé à un utilisateur non averti via une faille XSS afin d'accéder à ses données. Cependant, si l'expéditeur est suspect, le navigateur de l'utilisateur ne le détecte pas et exécute le script malgré tout. Concrètement, le script malveillant peut ainsi accéder aux cookies, aux jetons de session et à d'autres informations sensibles que le navigateur peut obtenir en croyant que l'expéditeur est une source fiable.
Les utilisateurs n'ont-ils pas à se soucier des attaques par script intersite (XSS) ?
Les vulnérabilités XSS sur les sites web ou les applications permettent aux attaquants d'injecter du code JavaScript dans les navigateurs des utilisateurs, compromettant ainsi la sécurité des sites et applications vulnérables, ainsi que celle de leurs utilisateurs. De la même manière que toute autre faille de sécurité, telle que les vulnérabilités XSS, elle ne concerne pas uniquement l'utilisateur. Autrement dit, si elle affecte vos utilisateurs, elle vous affecte également.
Il arrive que des attaques XSS (Cross-Site Scripting) soient utilisées pour défigurer un site web plutôt que de cibler directement un utilisateur, notamment lorsque l'attaquant cherche à nuire au site de l'intérieur. En injectant des scripts dans un site web, un attaquant peut en modifier le contenu, voire rediriger le navigateur vers une autre page web, par exemple une page infectée par un code malveillant, afin d'en altérer le contenu.
Comment fonctionne le cross-site scripting ?
Pour ce faire, un attaquant doit d'abord injecter un code malveillant (charge utile) dans l'URL d'une page web consultée par la victime, afin d'exécuter du code JavaScript malveillant dans son navigateur. La victime doit ensuite se rendre sur le site web contenant ce code malveillant pour l'exécuter. Un attaquant peut recourir à une technique d'ingénierie sociale ou d'hameçonnage pour envoyer une URL malveillante à une victime spécifique s'il la cible.
Pour que la première étape soit possible, le site web vulnérable doit pouvoir intégrer directement les données saisies par l'utilisateur. Un attaquant pourrait alors insérer une chaîne de caractères malveillante dans une page web, laquelle serait interprétée comme du code source par le navigateur de la victime lors de l'affichage de la page.
Quels sont les types d'attaques XSS ?
Les attaques XSS peuvent être classées en 3 types principaux. En voici quelques exemples :
- XSS par réflexion : Il s’agit d’une attaque XSS par réflexion dans la mesure où le script malveillant provient de la requête HTTP actuelle.
- XSS stocké : Une XSS stockée dans laquelle le script malveillant est situé dans la base de données d’un site web.
- XSS basé sur le DOM : Une vulnérabilité XSS basée sur les données DOM, dans laquelle la vulnérabilité se situe du côté client plutôt que du côté serveur, est connue sous le nom de XSS basé sur le DOM.
Comment prévenir les attaques XSS ?
Vous devez veiller à nettoyer vos données d'entrée afin d'éviter les attaques XSS. Par exemple, ne transmettez pas directement les données reçues du navigateur à votre code applicatif sans avoir préalablement vérifié l'absence d'erreurs. Le site web de Seahawk Media aborde d'autres sujets de ce type susceptibles de vous intéresser.