Retour aux articles
CVE critique dans une bibliothèque de parsing YAML utilisée par des millions de projets Node.js
SécuritéDev6 août 20262 min de lecture1 vue

CVE critique dans une bibliothèque de parsing YAML utilisée par des millions de projets Node.js

Une vulnérabilité critique de type prototype pollution a été découverte dans une bibliothèque YAML très répandue dans l'écosystème Node.js. En parsant un fichier YAML malveillant, un attaquant peut modifier le prototype global de JavaScript et exécuter du code arbitraire. Patch disponible, mise à jour urgente.

Une vulnérabilité critique (score CVSS 9.8) vient d'être divulguée dans une bibliothèque de parsing YAML largement utilisée dans l'écosystème Node.js. La faille, de type prototype pollution, permet à un attaquant qui contrôle le contenu d'un fichier YAML parsé par l'application de modifier le prototype global de JavaScript, pouvant mener à une exécution de code arbitraire dans certaines configurations.

Qu'est-ce que la prototype pollution ?

JavaScript repose sur un modèle d'héritage par prototype. Tous les objets héritent d'Object.prototype. Une attaque de prototype pollution consiste à modifier cet objet partagé en passant des clés spéciales dans des données parsées, typiquement __proto__ ou constructor.prototype.

Si la bibliothèque de parsing n'assainit pas ces clés, un fichier YAML de la forme suivante permet de modifier le comportement global de l'application :

__proto__:
  isAdmin: true
  toString: !!js/function 'function(){return process.mainModule.require("child_process").execSync("id")}'

L'impact concret dépend de ce que l'application fait avec les objets parsés, mais dans les scénarios les plus sévères, cela permet d'élever ses privilèges ou d'exécuter des commandes système.

Qui est concerné ?

La bibliothèque affectée est utilisée comme dépendance directe ou transitive dans un très grand nombre de projets Node.js, notamment dans des outils de build, des frameworks de test et des applications de configuration. Si vous parsez des fichiers YAML dont le contenu peut être influencé par un utilisateur ou une source externe non fiable, vous êtes potentiellement exposé.

Pour vérifier si vous utilisez une version vulnérable :

npm ls yaml
npm audit

La correction

Un patch a été publié dans les heures suivant la divulgation. La mise à jour vers la version corrigée est la seule mitigation fiable :

npm update yaml
# ou
npm install yaml@latest

En attendant la mise à jour, si vous ne pouvez pas patcher immédiatement : valider et assainir les entrées YAML avant parsing, rejeter tout fichier contenant les clés __proto__, constructor ou prototype au niveau des règles de validation en amont.

La leçon plus large

Cette vulnérabilité illustre un pattern récurrent : les bibliothèques de parsing (YAML, JSON, XML, CSV) sont des surfaces d'attaque à fort risque car elles traitent des données potentiellement contrôlées par des tiers. La règle de base : ne jamais parser sans valider, ne jamais faire confiance au contenu d'un fichier de configuration externe sans vérification de son intégrité.

Cet article a été partiellement rédigé ou modifié à l'aide d'une intelligence artificielle.