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

Risques

  • Injection de code arbitraire
  • Déni de service

Criticité

  • Score CVSS v3 : 7.5

Existence d’un code d’exploitation

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”.