Reconmind, accueil

Attaque

Cross-site scripting

Aussi appeléXSSInjection de script intersites

En résumé

Une vulnérabilité qui permet d’injecter du code JavaScript dans une page web consultée par d’autres utilisateurs. Le script s’exécute dans leur navigateur avec les droits de leur session et peut lire des données affichées, agir en leur nom ou rediriger vers un site contrôlé par l’attaquant.

Cross-site scripting, en détail

On distingue trois familles. Le XSS stocké persiste dans l’application, par exemple dans un commentaire ou un nom de profil, et touche tous ceux qui consultent la page. Le XSS réfléchi est déclenché par un lien piégé qui renvoie la valeur d’un paramètre dans la réponse. Le XSS basé sur le DOM se produit entièrement dans le navigateur, quand le code JavaScript de la page insère des données non fiables dans la page de façon dangereuse.

Le script s’exécute avec l’origine du site légitime : il accède donc à tout ce que l’utilisateur voit, peut émettre des requêtes authentifiées à sa place et, si les cookies de session ne sont pas marqués HttpOnly, les lire. Dans une interface d’administration, un XSS stocké déclenché par un opérateur peut conduire à la prise de contrôle d’un compte privilégié. La défense s’organise en couches : encoder les données à l’affichage selon leur contexte (HTML, attribut, JavaScript, URL), utiliser des frameworks qui échappent par défaut, déclarer une politique de sécurité : définition du contenu (CSP) qui restreint les scripts autorisés, et marquer les cookies de session HttpOnly et SameSite. Aucune couche seule ne suffit, mais ensemble elles limitent fortement l’impact.

Qu’est-ce que cela change pour vous ?

Un XSS sur une application métier est un vecteur d’attaque contre vos propres utilisateurs et administrateurs. Son impact dépend moins du défaut lui-même que des droits de la session qu’il permet d’emprunter.

Exemple illustratif (fictif)

Par exemple, sur un outil de support, le champ « objet » d’un ticket est affiché sans encodage dans la console des agents. Un ticket ouvert depuis le formulaire public exécuterait alors un script dans la session d’un agent et permettrait de lire la liste des clients accessibles à cet agent.

La confusion fréquente

Considérer le XSS comme un défaut mineur parce qu’« il ne touche que le navigateur ». Le navigateur de la victime porte une session authentifiée : ce que le script peut faire dépend des droits de cette session.

Comment le détecter chez vous ?

Aller plus loin

Termes liés

  • AttaqueCSRF : définitionUne attaque qui pousse le navigateur d’un utilisateur connecté à envoyer, à son insu, une requête vers un site où sa session est ouverte.
  • AttaqueInjection SQL : définitionUne vulnérabilité où des données saisies par l’utilisateur sont interprétées comme du code SQL par la base de données, faute de séparation entre la requête et ses paramètres.
  • AttaqueÉlévation de privilèges : définitionL’obtention de droits supérieurs à ceux accordés au départ, soit en accédant à un rôle plus puissant (élévation verticale), soit en accédant aux ressources d’un autre utilisateur de même niveau (élévation horizontale).
  • DéfenseDéfense en profondeur : définitionUne stratégie qui superpose plusieurs mesures de sécurité indépendantes, de sorte que la défaillance ou le contournement de l’une ne suffise pas à compromettre le système.

Revenir au glossaire complet

Réponse à toute demande sous 24 h ouvrées

Un périmètre à faire tester ?

Le cadrage est gratuit et sans engagement. Trente minutes suffisent à savoir si une mission est pertinente, laquelle, et ce qu’elle coûterait.

  • Accord de confidentialité systématique
  • Cadrage gratuit et sans engagement
  • Périmètre et prix écrits avant le début