Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege client
-
DeliveryIdentify any writable record
-
ExploitSend record update with path '__proto__.isAdmin'
-
ExecutionPollute Object.prototype in server process
-
PersistValve permission checks inherit attacker-controlled property
-
ImpactEscalate privileges across all records
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated deepstream.io client session (PR:L in the vendor vector) that holds write permission to at least one record under the server's Valve permission rules, network reachability to the deepstream server's client port, and a server running a version prior to 10.0.5 with the default json-path utility - no user interaction, no admin role, and no non-default feature flag is needed. Exploitation is limited where Valve rules deny write to all records for the attacker's identity, where the deployment fronts deepstream with a proxy that filters record-update payloads for prototype tokens, or where the server has already been restarted onto 10.0.5+; the attack is in-process to Node.js, so multi-process/clustered deployments must have every worker patched to be safe. |
| Impact | Vendor CVSS 3.1 of 9.9 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L) reflects a network-reachable, low-complexity attack from any authenticated record-writer, with scope change because polluting Object.prototype reaches code outside the record subsystem (notably the permission valve seen in the diff) - a credible justification for S:C rather than CVSS inflation. No EPSS, KEV, or SSVC data was supplied, and CISA KEV does not list this CVE, so the operative signals are the publicly visible patch commit plus regression tests that effectively spell out the vulnerable inputs (__proto__.polluted, constructor.prototype.polluted), which materially lowers the barrier to weaponisation even though no standalone PoC was published. The main limiter is the PR:L precondition: an attacker needs a valid client session with write permission to at least one record, which on hardened deployments (strict Valve rules, anonymous writes disabled) is non-trivial, but on default or permissive deployments - common for collaboration/sync apps - is the normal user role, so this should be treated as a high-priority patch rather than a theoretical issue. |
| Exploit ScenarioDerived | An attacker logs in as a normal deepstream client with write access to even one record (the default for many collaborative-app deployments) and sends a record-update message such as record set with path '__proto__.isAdmin' and value true. The unsafe setValue walks through Object.prototype, so every subsequent object - including data evaluated by the Valve permission engine on later requests - inherits isAdmin=true, allowing the attacker to bypass per-record access controls and escalate privileges across the entire deepstream cluster until the process is restarted. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 18, 2026
Prototype pollution in deepstream.io versions prior to 10.0.5 allows an authenticated client with write permission to any record to corrupt the Node.js Object prototype by submitting record-update messages whose path contains tokens such as __proto__, constructor, or prototype. Because deepstream's permission valve and record-transition pipeline both invoke setValue with the attacker-controlled path, polluting the prototype can taint subsequent permission and transition logic and lead to privilege escalation across all connected clients. No public exploit identified at time of analysis, though the upstream commit (54b8e29) and patch tests publicly demonstrate the exact vulnerable path semantics.
RemediationAI
Vendor-released patch: deepstream.io 10.0.5 - upgrade the server package to 10.0.5 or later per GHSA-9v98-6g37-x9g6 (https://github.com/deepstreamIO/deepstream.io/security/advisories/GHSA-9v98-6g37-x9g6) and commit 54b8e2958a98df444b5b5d9a66e22872afd84e44, which introduces isValidPath rejecting __proto__/constructor/prototype tokens and wraps the permission-valve setValue in try/catch. If immediate upgrade is not possible, tighten Valve permission rules so that no client identity (especially anonymous/guest) holds write permission on any record, since exploitation requires write on at least one record; review and revoke broad 'write: true' rules. As a stopgap at the edge, inspect incoming record messages and drop any whose path contains the substrings '__proto__', 'constructor', or 'prototype' (matches the FORBIDDEN_KEYS set added in the fix) - note this can break legitimate keys that happen to contain those substrings if you do partial matching, so prefer segment-level checks. Restart the Node.js process after applying any mitigation to clear any prototype pollution that may already be present in memory.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
deepstream.io is a Node.js/TypeScript realtime server that synchronises JSON 'records' between clients and backend services, applying per-path updates via an internal JSON-pointer utility (src/utils/json-path.ts) whose setValue function walks an object by string-tokenised keys. The root cause is CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes): the pre-10.0.5 tokenizer accepted segments like __proto__, constructor, and prototype, so a record update at message.path = '__proto__.polluted' caused setValue(record, path, value) to write through Object.prototype rather than into the record. The same unsafe setValue is reached from two paths in the patch diff - RecordTransition (handlers/record/record-transition.ts), which now pre-validates paths with isValidPath, and the permission valve RuleApplication (services/permission/valve/rule-application.ts), which now wraps setValue in try/catch - confirming both the record-write surface and the permission-evaluation surface processed attacker paths. CPE cpe:2.3:a:deepstreamio:deepstream.io:*:*:*:*:*:*:*:* identifies the affected package on npm/GitHub.
Know when Prototype Pollution gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L
Network-reachable client protocol (AV:N), trivial crafted path (AC:L), needs an authenticated writer (PR:L), no UI; prototype pollution leaves the record subsystem and taints the permission valve, so S:C with high C/I and low A.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
deepstream is a server that allows clients and backend services to sync data, send messages and make rpcs at scale. Versions prior to 10.0.5 are vulnerable to Prototype Pollution. Exploitation can lead to potential privilege escalation from any authenticated user with write permission to any record. This issue has been fixed in version 10.0.5.
Executive ViewAI
deepstream.io versions prior to 10.0.5 contain a critical prototype pollution vulnerability (CVE-2026-49252, CVSS 9.9) enabling authenticated users with write permissions to escalate privileges across all connected clients. Organizations using affected versions face risk of unauthorized access elevation, data corruption, and circumvention of permission controls affecting real-time data operations and compliance posture.
No vendor-released patch identified at time of analysis. Interim mitigations: enforce principle of least privilege by restricting write permissions to deepstream records only to trusted internal users; implement network segmentation blocking untrusted client connections; deploy independent application-level permission validation that does not rely on prototype chain integrity; establish continuous monitoring of permission audit logs for anomalous privilege grants or access patterns.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
More in Prototype Pollution
View allPrototype pollution in Adobe Acrobat Reader versions 24.001.30356, 26.001.21367 and earlier enables arbitrary code execu
All versions of package dojo are vulnerable to Prototype Pollution via the setObject function. Rated critical severity (
Prototype pollution in the farinspace Partners WordPress plugin (versions up to and including 0.2.0) enables remote unau
The package handlebars before 4.7.7 are vulnerable to Prototype Pollution when selecting certain compiling options to co
This affects the package ini before 1.3.6. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitabl
Prototype pollution vulnerability in 'deephas' versions 1.0.0 through 1.0.5 allows attacker to cause a denial of service
A Prototype Pollution issue in Cronvel Tree-kit v.0.7.4 and before allows a remote attacker to execute arbitrary code vi
A Prototype Pollution issue in Aliconnect /sdk v.0.0.6 allows an attacker to execute arbitrary code via the aim function
All versions of the package safe-eval are vulnerable to Prototype Pollution via the safeEval function, due to improper s
This affects the package vm2 before 3.9.4 via a Prototype Pollution attack vector, which can lead to execution of arbitr
Prototype Pollution in chargeover redoc v2.0.9-rc.69 allows attackers to execute arbitrary code or cause a Denial of Ser
alizeait unflatto <= 1.0.2 was discovered to contain a prototype pollution via the method exports.unflatto at /dist/inde
EUVD-2026-37943
GHSA-9v98-6g37-x9g6
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB