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.
Published: 2026-08-07
Score: 9.1 Critical
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The library scim-patch applies SCIM PATCH operations without filtering keys that target prototype properties. When a patch includes a key such as "__proto__.someProp", the library sets Object.prototype.someProp in the running Node process. This prototype pollution propagates to all plain objects, potentially corrupting application data and enabling malicious code to be executed or privileges to be escalated. The flaw falls under CWE-1321 and is rated with a CVSS score of 9.1.

Affected Systems

The vulnerability appears in all releases of the scim-patch library from thomaspoignant before version 0.9.1. Any Node.js application that imports this library and exposes a SCIM PATCH endpoint for external Identity Providers is affected. Version 0.9.1 and later contain the fix and are no longer vulnerable.

Risk and Exploitability

The high CVSS score reflects the serious impact; the EPSS score is not available, but the absence from the KEV catalog does not reduce the risk because the issue can be exploited by an attacker who can influence the SCIM PATCH payload. The likely attack vector is remote, through HTTP PATCH requests directed at the SCIM API. A single malicious patch can alter the process‑wide prototype and provide an attacker with an escape hatch into the application’s runtime.

Generated by OpenCVE AI on August 7, 2026 at 22:20 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the scim‑patch library to version 0.9.1 or later.
  • If a patch cannot be applied immediately, freeze JavaScript built‑in prototypes by calling Object.freeze(Object.prototype), Object.freeze(Array.prototype), and Object.freeze(Function.prototype) at application start, or launch Node with the --frozen-intrinsics flag to prevent prototype modification.
  • Restrict SCIM PATCH traffic to trusted Identity Providers and add input validation that rejects any keys starting with "__proto__" or otherwise targeting prototype properties.

Generated by OpenCVE AI on August 7, 2026 at 22:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-9m6g-wc8r-q59c scimPatch vulnerable to prototype pollution via unfiltered keys in patch
History

Fri, 07 Aug 2026 21:45:00 +0000

Type Values Removed Values Added
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.
Title scimPatch vulnerable to prototype pollution via unfiltered keys in patch
Weaknesses CWE-1321
References
Metrics cvssV3_1

{'score': 9.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:L'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-07T21:26:54.941Z

Reserved: 2026-05-20T23:12:43.033Z

Link: CVE-2026-48170

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-07T22:30:03Z

Weaknesses
  • CWE-1321

    Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')