Skip to main content

Attaques XSS : la prochaine vague

Écrit par

8 juin 2017

0 minutes de lecture

La menace XSS s’est-elle estompée ? Plus de 10 ans se sont écoulés depuis que le cross-site scripting (XSS) a fait la une. La sensibilisation a progressé et les défenses sont devenues bien plus sophistiquées. Pourtant, les données récentes racontent une autre histoire :

  1. Les attaques XSS ont augmenté de 39 % au premier trimestre 2017, leur plus forte hausse depuis le quatrième trimestre 2015

  2. Les vulnérabilités XSS devraient augmenter de 166 % en 2017, leur plus forte hausse depuis 2012

  3. La prévalence des XSS reste élevée et constante : depuis 2012, les XSS représentent environ 50 % des vulnérabilités de sites web

Nous avons récemment examiné les 10 principaux risques de sécurité de l’OWASP à la lumière des 50 plus importantes fuites de données de 2016. Comparées aux récits spectaculaires de fuites de données massives, les attaques XSS semblent avoir un impact bien moindre. Dans les faits, elles sont toutefois susceptibles de toucher beaucoup plus d’utilisateurs et de sites web : au lieu de provoquer une fuite de données massive en une seule fois, elles compromettent les utilisateurs un à un, dans une sorte de « mort par mille coupures ».

Dans cet article, nous présentons les dernières données sur les attaques XSS, les vulnérabilités et leur prévalence, qui indiquent que nous sommes au cœur d’une « nouvelle vague » de XSS. Enfin, nous analysons les raisons de la persistance et de la recrudescence des XSS.

Petit rappel sur les XSS

Les attaques XSS, ou attaques par cross-site scripting (voir la définition officielle de l’OWASP) se produisent lorsqu’un attaquant amène le navigateur d’un utilisateur à exécuter du code JavaScript malveillant dans le contexte du domaine de la victime. Ces scripts peuvent voler les cookies de session de l’utilisateur pour ce domaine, en extraire ou en modifier le contenu, et effectuer ou modifier des actions en son nom, des actions normalement bloquées par la politique de même origine du navigateur.

Les vulnérabilités XSS rendent ces attaques possibles en affichant le script de l’attaquant sur la page, où il s’exécute dans le contexte du domaine de la victime. Par exemple, un attaquant peut publier sur un article un commentaire contenant un script malveillant, en exploitant une vulnérabilité XSS. Le script compromet alors chaque visiteur de la page.

Schéma illustrant une attaque XSS persistante : un pirate injecte un script malveillant, qui est stocké dans la base de données puis transmis à une victime.
Une attaque XSS persistante dans laquelle le code malveillant est enregistré dans la base de données de l’application web

L’exemple ci-dessus décrit une vulnérabilité XSS « persistante ». Un autre type courant est le XSS « réfléchi », dans lequel le site web renvoie une partie de la requête. L’attaquant doit inciter l’utilisateur à cliquer sur un lien malveillant (par exemple, via un e-mail d’hameçonnage ou du code JavaScript malveillant sur une autre page), ce qui déclenche l’attaque XSS.

Enfin, les attaques XSS « basées sur le DOM » se produisent entièrement dans le navigateur, lorsque le JavaScript côté client réinjecte dans la page une partie de l’URL. Les XSS basés sur le DOM sont notoirement difficiles à détecter, car le serveur ne peut jamais observer l’attaque.

Les attaques XSS en hausse depuis un an : +39 % au premier trimestre

Publié chaque trimestre, le rapport Akamai sur l’état de la sécurité sur Internet montre que les attaques XSS ont diminué au début de 2016, mais qu’elles repartent à la hausse et ont fortement progressé au premier trimestre de cette année. Selon Akamai, les attaques XSS représentent désormais 10 % de toutes les attaques contre les applications web.

Diagramme à barres intitulé « Akamai : attaques XSS en % de l’ensemble des attaques », indiquant des pourcentages allant de 11,47 % au T4 2015 à 10 % au T1 2017.

Avant 2015, le rapport Akamai ne précisait pas le nombre d’attaques XSS, ce qui complique l’analyse des tendances antérieures. Les données de l’Imperva Web Application Attack Report, une étude portant sur 297 954 attaques contrées par les solutions WAF d’Imperva, apportent toutefois un éclairage sur les attaques XSS des années précédentes.

Imperva indique qu’en 2013, 2014 et 2015, l’application web moyenne de son jeu de données a subi respectivement 8, 12 et 21 attaques XSS, soit une hausse de 110 % entre 2014 et 2015.

Graphique en barres intitulé « Imperva : nombre moyen d’attaques contre une application Web », montrant une hausse de 8 attaques en 2013 à 12 en 2014 et 21 en 2015.

Bien qu’il s’agisse de deux jeux de données et de méthodologies très différents, on peut qualifier 2015 de « vague » d’attaques XSS. Et les données de 2017 laissent penser que nous sommes aujourd’hui au cœur de la « prochaine vague ».

Les vulnérabilités XSS devraient augmenter de 166 % en 2017

La National Vulnerability Database, compilée par le NIST, recense les vulnérabilités des produits logiciels par CVE, niveau de gravité et selon de nombreux autres critères.

Le nombre total de vulnérabilités XSS suit une tendance irrégulière depuis quelques années. L’année 2014 se démarque avec 1 028 vulnérabilités, soit 66 % de plus qu’en 2013. 2016 a été une année creuse, avec seulement 472 vulnérabilités, soit 34 % de moins qu’en 2015.

Graphique à barres intitulé « NIST : nombre total de vulnérabilités XSS signalées », présentant les chiffres annuels de 2012 à 2017, avec un pic de 1 354 en 2017.

Cependant, en 2017, la tendance est à la forte hausse : au cours des 5,5 premiers mois de l’année (à la date de rédaction de cet article), 508 vulnérabilités ont été signalées, soit plus que sur l’ensemble de 2016. Une extrapolation sur l’année entière donne une estimation de 1 354 vulnérabilités signalées cette année, ce qui représente une hausse sans précédent de 166 %.

C’est un nouvel indice de l’arrivée d’une « prochaine vague » de XSS, portée par une hausse inhabituelle du nombre de systèmes logiciels signalés comme vulnérables.

Il convient de noter que ces données ne tiennent pas compte des attaques XSS basées sur le DOM, qui se produisent côté client et sont presque impossibles à détecter. D’après notre expérience, ces attaques se multiplient à mesure que les applications monopages gagnent en popularité et que les sites web proposent des fonctionnalités côté client plus riches.

Par exemple, nous avons récemment étudié des bibliothèques JavaScript côté client et découvert que 77 % des sites utilisent au moins une bibliothèque JavaScript vulnérable. Beaucoup de ces vulnérabilités sont des XSS, difficiles à détecter avec les outils de surveillance traditionnels.

Les vulnérabilités XSS très médiatisées n’appartiennent pas au passé

Des vulnérabilités et attaques par cross-site scripting ont été signalées par le passé chez des organisations telles que MySpace (2005), American Express (2008), sur le site de campagne électorale de Barack Obama (2008), chez McAfee, Semantec et Kaspersky (2009), sur Facebook (2011), à la CIA et au FBI (2011), ainsi que chez Ebay (2012).

Mais ces incidents « spectaculaires » ne sont pas de l’histoire ancienne. En 2016 encore, les utilisateurs d’eBay et de Yahoo ont de nouveau été exposés à des attaques XSS. En juillet 2016, Cisco a annoncé une vulnérabilité XSS dans sa plateforme populaire Webex, rapidement corrigée.

En 2017, jusqu’au mois de mai seulement, la base de données du NIST avait recensé des vulnérabilités XSS dans certaines versions des logiciels de premier plan suivants :

Il ne s’agit que de quelques exemples anecdotiques : parmi les 508 vulnérabilités signalées au cours des derniers mois, beaucoup d’autres pourraient être considérées comme « très médiatisées ». Certaines ont peut-être été exploitées par des attaquants (une information dont nous ne disposions pas au moment de la rédaction).

La prévalence des XSS reste élevée depuis 2012

Une autre étude, le rapport de statistiques de WhiteHat Security, a suivi la prévalence des XSS de 2012 à 2015 en analysant les données d’analyse et de correction du service WhiteHat Sentinel. La mesure correspondait à la part des XSS parmi toutes les vulnérabilités détectées sur les sites participants.

Graphique en barres intitulé « WhiteHat : XSS en % de l’ensemble des vulnérabilités », indiquant 53 % en 2012, 42 % en 2013, 47 % en 2014 et 48 % en 2015.

Ces données contredisent l’idée selon laquelle les XSS seraient en recul ou en voie de disparition. Une décennie entière après que l’attaque XSS « Sami is My Hero » sur MySpace a stupéfié le monde, les XSS représentaient encore près de 50 % des vulnérabilités détectées sur les sites web en 2015, sans changement significatif par rapport aux années précédentes.

L’étude de WhiteHat souligne également l’importance des XSS par rapport aux autres vulnérabilités. De façon constante, les XSS figurent parmi les trois principales vulnérabilités détectées sur les sites web, avec un écart marqué entre leur prévalence et celle des autres vulnérabilités.

Voici les chiffres de 2015 : les XSS arrivaient en troisième position et représentaient 48 % de toutes les vulnérabilités, contre seulement 25 % pour la catégorie suivante, l’usurpation de contenu.

Graphique à barres horizontal classant les vulnérabilités web par fréquence, avec en tête l’insuffisance de la protection de la couche transport et les fuites d’informations.

Le rapport EdgeScan sur les statistiques des vulnérabilités confirme ces données avec des chiffres très similaires, obtenus selon une méthodologie comparable. EdgeScan indique que les XSS représentaient systématiquement plus de 50 % des vulnérabilités entre 2013 et 2015.

Notre analyse : les XSS constituent un problème qui s’aggrave

Les données montrent que les XSS restent une menace majeure et entrent probablement dans une nouvelle vague, tant par la prévalence des vulnérabilités que par le nombre d’attaques :

  • La part des XSS dans l’ensemble des attaques contre les applications web est passée de 7 % à 10 % au premier trimestre 2017.

  • Depuis quatre ans (et plus), des vulnérabilités XSS sont présentes sur environ 50 % des sites web.

  • Selon la base de données des vulnérabilités du NIST, le nombre de vulnérabilités XSS devrait augmenter de 166 % cette année : de 508 produits et systèmes vulnérables en 2016 à 1 354 vulnérabilités sur l’ensemble de 2017.

Il est important de garder à l’esprit que cette prévalence a un autre effet multiplicateur : une seule vulnérabilité XSS compromet tout le domaine où elle se trouve. Ainsi, une page distante rarement consultée, qui utilise du JavaScript ancien et est vulnérable aux XSS basés sur le DOM, expose et met en danger toutes les données et actions des utilisateurs sur le domaine qui l’héberge.

Chez Snyk, nous protégeons des milliers d’applications web contre les XSS et d’autres vulnérabilités présentes dans les packages open source qu’elles utilisent. Forts de notre expérience, nous pouvons avancer cinq raisons pour lesquelles les XSS ne disparaissent pas, contrairement aux espoirs de nombreux experts, et pourraient devenir un problème de sécurité encore plus difficile en 2017 :

  1. Des données toujours plus importantes sont transférées et des actions sont effectuées sur le web, ce qui rend les attaques XSS bien plus intéressantes pour les attaquants.

  2. Les applications monopages multiplient la logique côté client et le traitement des entrées utilisateur. Elles sont donc davantage susceptibles d’être vulnérables aux XSS basés sur le DOM, qui, comme indiqué plus haut, sont très difficiles à détecter pour les propriétaires de sites web.

  3. La persistance et la mise en cache accrues du JavaScript dans les applications web modernes, conçues pour prendre en charge l’accès hors ligne et les applications web progressives, permettent aux attaquants de conserver du JavaScript malveillant dans le navigateur d’une victime et de continuer à la compromettre longtemps après la correction de la vulnérabilité.

  4. Les écrans mobiles masquent les informations du navigateur, par exemple en tronquant les URL et les chaînes de requête, ce qui complique la détection d’éléments inhabituels lors de la navigation sur mobile.

  5. L’utilisation croissante de bibliothèques open source, présentes sur la plupart des sites web et dont l’adoption est encouragée par des frameworks tels que React et Angular, étend la portée des vulnérabilités XSS qu’elles contiennent. La plupart des sites web ne gèrent pas leurs dépendances et ignorent donc qu’ils restent vulnérables, même longtemps après la correction de la bibliothèque.

Les développeurs d’applications, les propriétaires de sites web et les responsables de la sécurité doivent tous en prendre note : les attaques XSS constituent un sérieux signal d’alarme en 2017 et méritent une attention particulière. Plus que jamais, les applications doivent être développées, testées, analysées et mises à jour en tenant compte des failles XSS, afin de réduire les risques pour l’organisation et les préjudices causés aux clients et aux utilisateurs.

Apprécié par les développeurs. Les équipes de sécurité lui font confiance.

Les outils Snyk, conçus pour les développeurs, offrent une sécurité intégrée et automatisée qui répond à vos exigences de gouvernance et de conformité.