CVE-2026-48170: scimPatch vulnerable to prototype pollution via unfiltered keys in patch
`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.
Security readout for executives and security teams
Plain-English summary
A flaw in scim-patch before 0.9.1 lets malicious SCIM update data alter shared Node.js behavior across an entire service process. This can undermine data integrity, expose limited information, or disrupt availability. Internet exposure is not required: a compromised or untrusted identity provider able to submit SCIM PATCH requests may reach the vulnerable code.
Executive priority
Treat as an urgent remediation for externally integrated identity-provisioning services. Prioritize systems accepting SCIM PATCH data from external identity providers because one malicious request may affect the full Node.js process. Upgrade promptly, apply documented hardening where immediate upgrades are impossible, and validate actual dependency versions rather than relying only on manifest declarations.
Technical view
CVE-2026-48170 is CWE-1321 prototype pollution. Unfiltered keys within a SCIM PATCH value object can modify Object.prototype process-wide. The supplied CVSS 3.1 score is 9.1, reflecting remote, low-complexity exploitation requiring low privileges and no user interaction, with high integrity impact. scim-patch versions before 0.9.1 are affected; 0.9.1 contains the patch.
Likely exposure
Highest exposure exists in Node.js services using scim-patch below 0.9.1 and passing attacker-controlled JSON to scimPatch(), particularly SCIM PATCH endpoints accepting requests from external identity providers. Services not using the library, using 0.9.1 or later, or not processing untrusted PATCH values are not identified as affected by the supplied evidence.
Exploitation context
The vulnerable operation can be reached remotely with low privileges, low complexity, and no user interaction. A successful request changes shared prototypes for every plain object in the Node.js process, potentially creating broader application effects. The supplied record says this CVE is not in KEV, and no provided source establishes active exploitation in the wild.
Researcher notes
The central security boundary failure is unsafe interpretation of object keys as prototype paths. Scope changes because polluted properties become process-wide rather than remaining within the patched SCIM resource. Impact depends on how the surrounding application consumes inherited properties. The supplied sources support the vulnerable condition and patch version, but do not document observed attacks or specific downstream exploitation chains.
Mitigation direction
Upgrade scim-patch to version 0.9.1 or later.
Until upgraded, freeze Object.prototype, Array.prototype, and Function.prototype during process startup.
Alternatively, evaluate Node.js --frozen-intrinsics as the documented built-in hardening option.
Restrict SCIM PATCH access to trusted identity providers and review vendor guidance.
Validation and detection
Inventory deployed applications and dependency locks for scim-patch versions below 0.9.1.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-1321: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-1321 · source CWE mapping
Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')
Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution') represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.