CyberRota Analysis
AI-GeneratedThe `scim-patch` library prior to version 0.9.1 is vulnerable to prototype pollution, allowing attackers to manipulate the `Object.prototype` by exploiting SCIM PATCH operations with specially crafted JSON payloads. This vulnerability can lead to severe consequences, as it affects all plain objects within the Node process, potentially enabling remote code execution or data manipulation. Organizations utilizing SCIM endpoints that accept external PATCH requests should prioritize upgrading to version 0.9.1 or implementing the recommended workaround to mitigate this critical risk.
Public Exploit Signal
A public exploit, PoC, GitHub repository or Metasploit reference was detected for this CVE.
Note: these links are listed for security research and verification purposes only.
Original NVD Description
`scim-patch`, a library to perform SCIM patch, prior to version 0.9.1 performs prototype pollution when applying a SCIM PATCH operation whose `value` object contains a key like `"__proto__.someProp"`. After one such patch, `Object.prototype.someProp` is set process-wide, affecting every plain object in the Node process. Any service that calls `scimPatch()` on attacker-controlled JSON (i.e. any SCIM endpoint accepting `PATCH` from an external IdP) is exploitable on a stock Node runtime. Version 0.9.1 contains a patch. A workaround is available. Calling `Object.freeze(Object.prototype)` (and the same on `Array.prototype`, `Function.prototype`) at process startup neutralizes this class of bug — assignment to a frozen prototype becomes a silent no-op in sloppy mode or a `TypeError` in strict mode. Node's `--frozen-intrinsics` flag does this for built-ins automatically.