LiveActive security incident?Get immediate response
CVE Record

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.

CriticalCVSS 9.1Not KEV-listedUpdated
Glexia's TakeAutomated analysiscritical

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.
  • Trace whether attacker-controlled SCIM PATCH values reach scimPatch().
  • Confirm production installations resolve scim-patch 0.9.1 or later.
  • Verify any temporary prototype-freezing control executes before SCIM request processing.
  • Run defensive regression tests confirming suspicious path keys cannot modify built-in prototypes.
Prepared
Confidence
high
Sources
4

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.

Open ATT&CK lookup
cve · low confidence lookup

CVE-2026-48170 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
Critical
CVSS
9.1 (3.1)
Known Exploited
No
Published

Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:L

Official CVE source material

CNA and ADP enrichment extracted from CVE v5

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.

1CVSS vectors
3Timeline events
1ADP providers
3Source links

SSVC decision data

CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: pocAutomatable: noTechnical Impact: partial

CVSS vector scores

1 official score

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.

ScoreVersionSeverityVectorExploitImpactSource
9.1CVSS 3.1CriticalCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:L3.15.3GitHub_M

Vulnerability scoring details

Base CVSS 3.1 score

9.1Critical
CVSS 3.1 vector shape for CVE-2026-48170Attack VectorAttack ComplexityPrivileges RequiredUser InteractionScopeConfidentiality ImpactIntegrity ImpactAvailability Impact

Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:L

Attack Vector
NetworkAdjacentLocalPhysical
Attack Complexity
LowHigh
Privileges Required
NoneLowHigh
User Interaction
NoneRequired
Scope
ChangedUnchanged
Confidentiality Impact
HighLowNone
Integrity Impact
HighLowNone
Availability Impact
HighLowNone

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

ADP provider summaries

CISA-ADPCISA ADP Vulnrichment
other:ssvc
Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
thomaspoignantscim-patch< 0.9.1Listed
Weakness

CWE details

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.