
Corriger l'utilisation du package open source tough-cookie 2.5.0 - CVE-2023-26136,
Les versions du package tough-cookie antérieures à 4.1.3 sont vulnérables à la pollution de prototype en raison d'une gestion inappropriée des cookies lors de l'utilisation de CookieJar en mode rejectPublicSuffixes=false. Ce problème provient de la manière dont les objets sont initialisés.
https://nvd.nist.gov/vuln/detail/CVE-2023-26136
La pollution de prototype est une vulnérabilité affectant JavaScript. La pollution de prototype désigne la capacité d'injecter des propriétés dans les prototypes de constructions du langage JavaScript existants, comme les objets. JavaScript permet de modifier tous les attributs des objets, y compris leurs attributs magiques tels que proto, constructor et prototype. Un attaquant manipule ces attributs pour écraser, ou polluer, le prototype d'un objet d'application JavaScript de l'objet de base en injectant d'autres valeurs. Les propriétés sur Object.prototype sont alors héritées par tous les objets JavaScript via la chaîne de prototypes. Lorsque cela se produit, cela conduit soit à un déni de service en déclenchant des exceptions JavaScript, soit à une altération du code source de l'application pour forcer le chemin de code que l'injecte l'attaquant, conduisant ainsi à une exécution de code à distance.
Il existe deux principales façons dont la pollution de prototype se produit :
Note importante : https://github.com/salesforce/tough-cookie/issues/282 https://security.snyk.io/package/npm/tough-cookie/2.5.0
=> Pour corriger la vulnérabilité dans la classe MemoryCookieStore, vous devez modifier la méthode putCookie pour empêcher la pollution de prototype lorsque cookie.domain est défini sur proto.
a. Modifiez tough_cookie_2.5.0\node_modules\tough-cookie\lib\memstore.js
Toutes les occurrences de création de nouveaux objets dans memstore.js ont été changées de {} Object.create(Object.prototype) à Object.create(null)
afin d'utiliser des instances d'objets qui n'ont pas de propriété prototype pouvant être polluée.
b. Création d'un nouveau fichier /node_modules/tough-cookie/lib/test-unit.js utilisé en vanillajs pour cela, se trouve dans le dossier tests fichier cookie_jar_test.js "Issue #282 - Prototype pollution"
Commande : node test-unit.js
c. Création d'un nouveau fichier /node_modules/tough-cookie/lib/testVerifyVulnerable.js vérifie que le comportement vulnérable a été corrigé.
Commande : node testVerifyVulnerable.js
a. Package régulier tough-cookie V 2.5.0
Commande : npm install [email protected] && node index.js
b. Package compressé tough-cookie V 2.5.0 au format tgz avec les modifications
Commande : npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js
c.
Pollution de prototype : En ajoutant des propriétés directement à Object. prototype, il y a un risque de polluer toute la chaîne de prototypes. Cela peut entraîner un comportement inattendu dans toute l'application, car tout objet qui parcourt la chaîne de prototypes peut être affecté.
Risques de sécurité : Dans un contexte d'application web, la pollution de prototype peut être exploitée par des attaquants pour manipuler des objets et des propriétés, pouvant conduire à des vulnérabilités de sécurité telles que l'escalade de privilèges, la fuite d'informations.
Problèmes de compatibilité : La modification de prototypes fondamentaux comme Object. prototype peut introduire des problèmes de compatibilité avec d'autres bibliothèques ou frameworks qui dépendent du comportement standard. Cela peut provoquer des erreurs ou un comportement inattendu lors de l'intégration ou de la mise à jour des dépendances. d. écrit ci-dessus.
Comment installer ce projet