CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-61834

CVE-2026-61834: Prototype Pollution and Mutation of Inherited Built-in Method Objects in scim-patch

Alon Barad
Alon Barad
Software Engineer

Sep 28, 2026·6 min read·33 visits

Executive Summary (TL;DR)

The scim-patch library fails to restrict traversal through inherited properties during SCIM PATCH operations. Authenticated attackers can use dotted paths or implicit key resolution to access and mutate global built-in methods, leading to prototype pollution and application instability.

A vulnerability in the scim-patch library allows authenticated users to pollute the global JavaScript execution environment. By transmitting a SCIM PATCH operation targeting inherited built-in methods, such as toString, valueOf, or hasOwnProperty, attackers bypass blocklist filters and mutate global prototype objects. This flaw occurs due to the library relying on standard prototype lookup and the 'in' operator during path-resolution and assignment, resolving to shared native functions instead of treating them as missing own-properties.

Vulnerability Overview

The vulnerability identified as CVE-2026-61834 is a medium-severity security flaw within the scim-patch library. This NPM package is designed to parse and apply SCIM patch operations according to RFC 7644 specifications. The library failed to restrict modification of inherited built-in methods during path-resolution and assignment routines.\n\nWhile standard prototype pollution vectors targeting explicit keywords like __proto__ or constructor were blocked by a denylist, the traversal logic remained vulnerable to inherited property lookups. An authenticated attacker can target inherited properties such as toString, valueOf, or hasOwnProperty. Because JavaScript resolves these properties through the prototype chain to global built-in functions, the library proceeds to mutate these shared function objects.\n\nThis behavior maps to CWE-915 (Improperly Controlled Modification of Dynamically-Determined Object Attributes) and CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes). The attack surface is exposed via standard SCIM API endpoints that process client-defined patch payloads. Successful exploitation permits process-global mutation of built-in method objects.

Root Cause Analysis

The root cause of this vulnerability lies in the reliance on unconstrained property lookups within the path navigation and value assignment implementations of scim-patch. Specifically, the library utilizes the standard bracket lookup operator (schema[subPath]) and the in operator (key in obj) to verify the existence of intermediate nodes during path resolution.\n\nIn JavaScript, both of these operations evaluate properties across the entire prototype chain of the object. When a SCIM patch path segment specifies a built-in method like toString, the expression schema['toString'] evaluates to the native Function.prototype.toString or Object.prototype.toString object. Since the expression returns a truthy value, the library incorrectly assumes that the path segment represents an already initialized local property.\n\nThe resolver then uses this resolved function object as the context for downstream property writes. When the final assignment takes place, the library appends arbitrary properties directly onto the shared native function object. This behavior compromises the integrity of the execution environment, polluting the global scope and modifying how the application processes object evaluations.

Code Analysis and Comparison

The vulnerable version of the library utilizes unsafe lookup patterns in two critical areas: navigate() and assign(). In the navigate() function, the resolution loop does not check whether a property belongs to the target object itself or if it is inherited from the prototype chain.\n\ntypescript\n// Vulnerable path resolution pattern\nschemas = schemas.flatMap((schema)=>{\n if (!schema[subPath] && options.isRemoveOp)\n throw new InvalidRemoveOpPath();\n\n return schema[subPath] || (schema[subPath] = {});\n});\n\n\nSimilarly, in the assign() function, the existence of intermediate path keys is checked using the in operator. Because in returns true for inherited keys, the check fails to catch native functions like toString, allowing the assignment function to descend into the global function prototype and write the target property onto it.\n\ntypescript\n// Vulnerable assignment pattern\nfor (let i = 0; i < lastKeyIndex; ++ i) {\n const key = keyPath[i];\n if (!(key in obj)){\n obj[key] = {};\n }\n obj = obj[key];\n}\n\n\nThe fix introduced in version 0.9.2 replaces these operations with explicit Object.prototype.hasOwnProperty.call() checks. This modification ensures that any inherited property that does not explicitly exist as an 'own' property of the target object is treated as missing. The library subsequently creates a fresh local object to shadow the inherited name rather than modifying the global built-in.\n\nmermaid\ngraph LR\n subgraph Vulnerable Flow\n A["Path Segment 'toString'"] --> B{"schema['toString'] Check"}\n B -->|Resolves to Function.prototype| C["Descend into Global built-in"]\n C --> D["Pollute Global toString Object"]\n end\n subgraph Patched Flow\n E["Path Segment 'toString'"] --> F{"hasOwnProperty('toString') Check"}\n F -->|False| G["Create Local Object {}"]\n G --> H["Shadow inherited property safely"]\n end\n

Exploitation Methodology

Exploitation of CVE-2026-61834 requires the ability to send authenticated SCIM PATCH requests to an application that processes user or group attributes using the scim-patch package. The attack can be initiated through two distinct payload structures: dotted path notation and implicit path resolution via the value payload.\n\nIn the dotted path vector, an attacker includes a target path that references a built-in method followed by a custom attribute name, such as toString.polluted. The parsing engine processes the first segment (toString), resolves it to the global prototype, and appends the second segment (polluted) with the provided value directly onto the native function.\n\njson\n[\n {\n "op": "add",\n "path": "toString.pollutedAttribute",\n "value": "polluted"\n }\n]\n\n\nIn the alternative vector, where no path is explicitly defined, the attacker can leverage the keys of the value object. The assignment engine processes each key, performing the same unsafe in check on keys such as toString.nestedValue. This achieves an identical result, polluting the runtime environment.\n\njson\n[\n {\n "op": "add",\n "value": {\n "toString.implicitPolluted": "polluted"\n }\n }\n]\n

Impact Assessment

The impact of this vulnerability is characterized by a process-global integrity compromise. Although mutating built-in methods does not immediately expose sensitive data, it destabilizes the JavaScript execution environment. This can cause downstream application libraries or frameworks to crash, leading to a Denial of Service.\n\nFurthermore, prototype pollution of this nature can lead to secondary vulnerabilities. If downstream application logic evaluates properties on native objects without performing safety checks, an attacker may exploit this behavior to execute arbitrary code or bypass security controls. This is particularly critical in authentication modules, authorization checks, and logging utilities that invoke native methods such as toString() during processing.\n\nThe CVSS 3.1 score is calculated as 4.3 (Medium), reflecting a network-based attack vector with low complexity and low integrity impact, but requiring low-privileged user authentication. The impact on confidentiality and availability is rated as none under the base vector, although secondary exploitation could elevate these impacts depending on application context.

Remediation Guidance

The primary remediation strategy is upgrading the scim-patch library to version 0.9.2 or higher. The patch incorporates explicit own-property checks, preventing the traversal engine from resolving inherited built-in methods as valid path structures.\n\nFor environments where immediate patching is not feasible, several defensive-in-depth measures can be deployed to reduce exposure. Network-level mitigations include configuring Web Application Firewalls (WAFs) to inspect incoming SCIM PATCH payloads and reject requests containing path segments matching known built-in method names.\n\nAdditionally, developers can freeze native prototype objects at application startup to prevent any modifications from taking place:\n\njavascript\n// Freeze built-in prototypes to block pollution\nObject.freeze(Object.prototype);\nObject.freeze(Function.prototype);\n

Fix Analysis (1)

Technical Appendix

CVSS Score
4.3/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
EPSS Probability
0.28%
Top 82% most exploited
1,200
via Shodan

Affected Systems

scim-patch NPM Package

Affected Versions Detail

Product
Affected Versions
Fixed Version
scim-patch
thomaspoignant
< 0.9.20.9.2
AttributeDetail
CWE IDCWE-915 / CWE-1321
Attack VectorNetwork
CVSS v3.1 Score4.3 (Medium)
EPSS Score0.0028 (0.28%)
ImpactProcess-Global Attribute Mutation
Exploit StatusProof-of-Concept
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1059Command and Scripting Interpreter
Execution
CWE-1321
Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')

The product allows an attacker to modify properties of the global object prototype, which can affect behavior of all objects that inherit from that prototype.

Known Exploits & Detection

GitHub Security AdvisoryAdvisory details describing the vulnerability mechanics and remediation paths.

Vulnerability Timeline

Commit c86474f submitted and version 0.9.2 released.
2026-06-24
GitHub Security Advisory GHSA-2mhw-wcx5-v3xj published.
2026-09-23
CVE-2026-61834 published in NVD.
2026-09-23

References & Sources

  • [1]GitHub Security Advisory GHSA-2mhw-wcx5-v3xj
  • [2]GitHub Pull Request #1127
  • [3]GitHub Commit c86474f
  • [4]Release v0.9.2
  • [5]National Vulnerability Database (NVD)
  • [6]CVE.org Authority Record
  • [7]Shodan Vulnerability Details
  • [8]MITRE ATT&CK Mapping Portal

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 18 hours ago•CVE-2026-120006
7.5

CVE-2026-120006: Elevation of Privilege in .NET Aspire via Unintended Dashboard Endpoint Tunneling

An elevation of privilege vulnerability exists in .NET Aspire versions prior to 13.6.5 due to the insertion of sensitive information into sent data (CWE-201). When the Developer Control Plane (DCP) container tunneling feature is enabled, the orchestration engine implicitly exposes all endpoints of the Aspire Dashboard—including its administrative frontend and management APIs—to containerized workloads instead of restricting tunnel access solely to OpenTelemetry Protocol (OTLP) collection endpoints. This exposure allows an attacker operating within a compromised or untrusted container to query the dashboard frontend, extract sensitive environment variables and connection strings, and elevate privileges across the host orchestration boundary.

Amit Schendel
Amit Schendel
5 views•10 min read
•about 19 hours ago•CVE-2026-118750
7.5

CVE-2026-118750: Uncontrolled Resource Allocation in ASP.NET Core FileBufferingReadStream

CVE-2026-118750 is an uncontrolled resource allocation vulnerability (CWE-770) affecting the Microsoft.AspNetCore.WebUtilities component in ASP.NET Core. Specifically, the FileBufferingReadStream class eagerly allocates large memory buffers from the shared ArrayPool<byte> inside its constructor prior to reading any incoming request payload data. An unauthenticated remote attacker can exploit this behavior by opening numerous concurrent connections and stalling or omitting request body transmission, exhausting shared memory pools and causing a server-wide Denial of Service (DoS).

Amit Schendel
Amit Schendel
6 views•10 min read
•about 20 hours ago•CVE-2026-114155
7.5

CVE-2026-114155: Local Elevation of Privilege via TOCTOU Race Condition in Microsoft .NET dotnet-watch

CVE-2026-114155 is a local elevation of privilege vulnerability affecting Microsoft .NET on Linux and macOS platforms. The vulnerability exists within the dotnet-watch (Hot Reload) component and is caused by a Time-of-Check Time-of-Use (TOCTOU) race condition (CWE-367) during the generation and execution of temporary XML solution files (.slnx) in shared system temporary directories. A local attacker with low privileges can intercept and modify the temporary solution file before MSBuild evaluates it, achieving arbitrary code execution in the security context of the user running dotnet-watch.

Alon Barad
Alon Barad
5 views•9 min read
•about 21 hours ago•CVE-2026-118748
7.5

CVE-2026-118748: Unbounded Memory Allocation Denial of Service in ASP.NET Core Blazor Static-SSR

CVE-2026-118748 is a remote Denial of Service (DoS) vulnerability in Microsoft ASP.NET Core (.NET 11.0 preview releases prior to 11.0.0) and Microsoft Visual Studio 2026 (prior to 18.12.0). The flaw originates from unbounded resource allocation (CWE-770) within the Blazor static server-side rendering (static-SSR) validation pipeline, where dynamic or attacker-supplied form field identifiers are cached in a singleton-scoped memory structure without size limits or eviction policies. Unauthenticated remote attackers can exploit this condition over the network by sending repeated HTTP requests with unique field names, exhausting heap memory and terminating the host process via an unhandled OutOfMemoryException.

Alon Barad
Alon Barad
11 views•9 min read
•about 22 hours ago•CVE-2026-114150
5.9

CVE-2026-114150: Remote Information Disclosure via Uninitialized Pooled Memory in ASP.NET Core Response Buffering

CVE-2026-114150 is a network-accessible information disclosure vulnerability affecting Microsoft ASP.NET Core in .NET 11.0 preview releases and Microsoft Visual Studio 2026 prior to version 18.12.0. The flaw stems from the use of uninitialized resources (CWE-908) within response buffering components, specifically ResponseBufferingStream used by middleware such as HTTP Logging and Output Caching. Because rented memory segments from ArrayPool<byte> or MemoryPool<byte> are not cleared upon return or strictly bounded to the exact written byte count during subsequent reads, residual response payloads from earlier HTTP requests remain in the buffer tail. Downstream consumers or log sinks reading these buffers expose confidential cross-session data, including authentication tokens and personally identifiable information.

Amit Schendel
Amit Schendel
4 views•11 min read
•about 23 hours ago•CVE-2026-114146
9.0

CVE-2026-114146: Elevation of Privilege in ASP.NET Core SignalR Connection Dispatcher

An incorrect authorization vulnerability (CWE-863) exists in the ASP.NET Core SignalR HTTP Connection Dispatcher (`Microsoft.AspNetCore.Http.Connections`). The connection negotiation process failed to bind the authenticated caller identity to the generated connection state, and subsequent transport or message dispatch handlers failed to verify caller consistency. Consequently, an authenticated low-privilege attacker who obtains a valid connection identifier or token can inject messages into or hijack another user's SignalR session, achieving an elevation of privilege across security boundaries.

Alon Barad
Alon Barad
18 views•11 min read