77 % des sites utilisent au moins une bibliothèque JavaScript vulnérable
Tim Kadlec
29 mars 2017
0 minutes de lectureLa semaine dernière, une étude a révélé qu’environ 37 % des sites incluaient au moins une bibliothèque JavaScript présentant une vulnérabilité connue. Lorsque nous avons parlé de ces résultats, nous avons indiqué que la réalité était presque certainement pire.
C’est le cas. Et de loin.
Nous avons réalisé notre propre test à partir des 5 000 principales URL d’Alexa et découvert que pas moins de 76,6 % d’entre elles incluaient au moins une bibliothèque vulnérable. Si vous souhaitez savoir comment nous avons procédé, vous trouverez les détails ci-dessous. Sinon, vous pouvez passer directement aux résultats.
Le test
Pour effectuer les tests, nous avons récupéré les 5 000 principales URL d’Alexa. Plusieurs URL renvoyaient une erreur lorsque nous tentions d’y accéder. Nous avons donc poursuivi notre recherche dans la liste Alexa jusqu’à obtenir 5 000 pages qui se chargeaient toutes correctement.
Nous avons testé chaque URL avec WebPageTest. WebPageTest a chargé chaque page dans Chrome, puis exécuté du code JavaScript personnalisé pour déterminer la version de quelques bibliothèques JavaScript.
Par exemple, pour déterminer la version de jQuery utilisée, chaque page exécutait le code suivant après son chargement :
Lors de cette première série de tests, nous avons vérifié la présence des bibliothèques suivantes :
jQuery
Handlebars
Mustache
React
Angular
Ember
jQuery UI
YUI
Dojo
Pour chaque version détectée, nous avons ensuite consulté la base de données des vulnérabilités open source de Snyk afin de déterminer combien de bibliothèques présentaient une vulnérabilité connue.
Des résultats peu réjouissants
Comme nous l’avons indiqué plus haut, la sécurité des bibliothèques JavaScript est dans un état alarmant : inutile d’enrober les choses. Sur les 5 000 sites, 3 831 (76,6 %) intègrent une bibliothèque JavaScript présentant au moins une vulnérabilité connue.

Cela peut sembler étonnant compte tenu du pourcentage déjà élevé, mais, comme dans l’étude initiale, la réalité est probablement encore pire. Nous avons testé neuf bibliothèques JavaScript. Or, les frameworks et bibliothèques JavaScript à la disposition des développeurs se comptent par centaines. Celles que nous avons testées figurent parmi les plus populaires ; il est donc peu probable que le pourcentage augmente de façon spectaculaire, mais quelques points supplémentaires sont presque certains.
Et rappelons que nous avons uniquement recherché les vulnérabilités connues dans les bibliothèques JavaScript tierces côté client. L’utilisation côté serveur n’est pas prise en compte, pas plus que le code JavaScript personnalisé. De plus, de nouvelles vulnérabilités sont ajoutées chaque jour à notre base de données : il en existe d’autres, même si elles ne sont pas encore connues du public.
jQuery
Sans surprise, jQuery est la bibliothèque la plus populaire parmi celles que nous avons testées ; sa domination exceptionnelle est bien documentée. Nous avons détecté jQuery sur 79 % des 5 000 principales URL.
Même si jQuery n’est pas une bibliothèque particulièrement vulnérable (elle compte cinq vulnérabilités connues, toutes corrigées dans des versions ultérieures), sa popularité suffit à causer beaucoup de dégâts à elle seule.
En fait, même en ne vérifiant que jQuery, nous constatons que 75,1 % des sites utilisent une version présentant au moins une vulnérabilité. Cela s’explique en grande partie par l’ancienneté de la plupart des versions de jQuery en production. 17,4 % des versions de jQuery trouvées en production ont plus de cinq ans. Ces résultats concordent assez bien avec l’étude initiale : les mises à jour ne sont pas très fréquentes.

La situation est encore plus compliquée pour les utilisateurs de jQuery : seules les versions >=3.0.0 ne présentent aucune vulnérabilité connue. Pour de nombreux utilisateurs actuels, la mise à jour ne se résume donc pas à installer une version mineure : elle peut entraîner des changements incompatibles. Environ 79 % des bibliothèques jQuery détectées étaient en version 1.x. Bien que la version finale 3.0.0 de jQuery soit sortie il y a près d’un an, seuls 3,6 % des sites utilisaient une version 3.x.


Nous nous pencherons plus en détail sur jQuery dans notre prochain article, car sa popularité inégalée en fait un sujet particulièrement intéressant.
jQuery UI
jQuery UI arrivait en deuxième position en matière de popularité : nous l’avons trouvée sur 19,3 % des URL testées. Là encore, la plupart des utilisateurs de jQuery UI utilisent une version vulnérable, alors que des mises à jour sont disponibles. Environ 91 % des bibliothèques jQuery UI trouvées présentent au moins une vulnérabilité.

Là encore, cela s’explique en grande partie par le manque de mises à jour : 21,8 % des sites utilisant jQuery UI se servent d’une version datant de plus de cinq ans.
Handlebars
Handlebars a été détecté sur 3,4 % des URL testées. Parmi celles-ci, 68 % utilisaient une version vulnérable de Handlebars. Une fois encore, la lente adoption des nouvelles versions est la principale responsable. À première vue, l’utilisation de Handlebars semble un peu plus récente. Nous n’avons pas détecté la version la plus récente de la bibliothèque (4.0.6), mais la version précédente (4.0.5) est aussi la plus répandue en production, avec 26,7 % des utilisations de Handlebars.

Cependant, comme les sorties de nouvelles versions ont ralenti (seules deux versions mineures sont sorties depuis novembre 2015), ces sites utilisent toujours une version de la bibliothèque qui a près de deux ans. Au total, 40 % des versions de Handlebars détectées avaient plus de trois ans.
React, Mustache, Angular, YUI et Dojo
React (1,7 %), Mustache (1,6 %), Angular (1,3 %), YUI (0,7 %) et Dojo (0,2 %) ont été détectés trop rarement pour tirer des conclusions fiables sur leur utilisation individuelle. Mais si l’on regroupe leurs données, les versions vulnérables restent très répandues : 56,3 % des versions de ces bibliothèques trouvées dans les données présentent au moins une vulnérabilité.
Une conclusion porteuse d’espoir
La situation actuelle est loin d’être idéale, c’est indéniable. Nous nous attendions à ce que le chiffre de l’étude initiale soit optimiste, mais nous ne pensions pas que 77 % des sites utiliseraient au moins une bibliothèque vulnérable.
Et pour être clair, aucune mesure isolée ne suffira à résoudre ce problème. Il faudra plutôt combiner une meilleure sensibilisation, des outils plus performants et une méthode plus simple pour gérer les dépendances JavaScript côté front-end (les gestionnaires de paquets y sont moins répandus que pour le développement back-end), entre autres.
Mais comme nous l’avons déjà dit, nous gardons espoir. Sécuriser le JavaScript tiers est un problème que l’on peut résoudre, même si cela demande un peu plus d’efforts que prévu.
Compte tenu de la sensibilité d’un tel rapport, nous ne communiquerons pas les données brutes : cela reviendrait à fournir une liste de sites et de vecteurs d’attaque potentiels. Cependant, si vous possédez un site Web, vous pouvez nous contacter pour savoir si votre site figurait dans le rapport et, le cas échéant, si une vulnérabilité a été découverte. Si vous utilisez des paquets npm, tester votre application avec Snyk peut également vous aider à détecter d’éventuelles failles de sécurité.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.