Vulnérabilité dans la bibliothèque Javascript Chart.js
Date de publication :
CVE-2020-7746[Score CVSS v3 : 7.5] : Les options paramétrées pour les objets Javascript ne sont pas correctement vérifiées. Lors de leur traitement, les options par défaut et les options personnalisées sont assemblées. Durant ce processus les clefs de l’objet en train d’être défini ne sont pas vérifiées, un attaquant distant et non-authentifié peut alors polluer le prototype JavaScript instancié. Il lui est alors possible d'injecter du code arbitraire et/ou provoquer un déni de service.
Informations
La faille est activement exploitée :
Un correctif existe :
Une mesure de contournement existe :
Risques
Injection de code arbitraire
Déni de service
Criticité
Score CVSS v3 : 7.5
Existence d’un code d’exploitation
Il n’existe pas de code d’exploitation disponible à ce jour. Néanmoins des détails précis sur la vulnérabilité et son exploitation sont disponibles ici :
https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSBOWER-1019375
Composants vulnérables
Tous les logiciels et applications utilisant une version de Chart.js inférieure à la version 2.9.4 sont vulnérables.
IBM Spectrum Project v10.1.0 à v10.1.6 est notamment vulnérable.
CVE
Solutions ou recommandations
Mise en place de correctifs de sécurité
Mettre à jour Chart.js vers la version 2.9.4 ou une version supérieure.
Solution de contournement
Dans le cas où le code JavaScript est modifiable (il n'appartient pas à une application tierce), il est possible d’appliquer les mesures de contournement suivantes :
Geler le prototype avec la fonction : Object.freeze (Object.prototype).
Exiger la validation du schéma de l'entrée JSON.
Éviter d'utiliser des fonctions de fusion récursive non sûres.
Envisager d'utiliser des objets sans prototype (par exemple, Object.create(null)), pour briser la chaîne du prototype et en prévenir la pollution de celui-ci.
En termes de bonnes pratiques, utiliser les instances “Map” au lieu d'”Object”.