deepstream Valve Permission System Bypass via PATCH_MULTI
The deepstream server contains a vulnerability where the PATCH_MULTI action is missing from the Valve permission system's rule map, resulting in an unconditional allow for any authenticated user to perform unauthorized record writes.
CVE search metadata
CVE search record: CVE-2026-63116. Severity: high. CVSS: 8.8. KEV: no. Product: deepstream/server (v10.1.0). Brief: deepstream Valve Permission System Bypass via PATCH_MULTI. Brief link: https://feed.craftedsignal.io/briefs/2026-09-deepstream-valve-bypass/
Deepstream servers using the Valve (ConfigPermission) permission system are vulnerable to an authorization bypass due to a configuration oversight in the src/services/permission/valve/rules-map.ts file. The RECORD_ACTION.PATCH_MULTI action, introduced in recent versions, was never registered in the RULES_MAP used by the system to evaluate user permissions.
When the server receives a PATCH_MULTI message, the getRulesForMessage() function fails to find a corresponding rule mapping and returns null. The system's security logic is designed to treat a null result as an unconditional allow, effectively bypassing all configured Valve permission rules. This allows any successfully authenticated user, regardless of their defined access level, to write arbitrary data to any record in the system. This vulnerability impacts production environments using the Valve permission model, potentially leading to unauthorized data modification, privilege escalation through record manipulation, and system-wide service disruption.
Attack Chain
- Attacker performs authentication against the deepstream server using valid, low-privilege credentials.
- Attacker crafts a malicious WebSocket message with
topic: RECORDandaction: PATCH_MULTI. - Attacker specifies a target record name (e.g., "admin/secret-record") and malicious
parsedDatain the message payload. - The
message-processor.tsservice receives the request and triggers a permission evaluation call toConfigPermission.canPerformAction(). - The permission service invokes
getRulesForMessage()to retrieve the policy forPATCH_MULTI. getRulesForMessage()fails to find the action in theRULES_MAPand returnsnull.- The
config-permission.tslogic evaluates thenullresult and defaults to an unconditional grant of access. - The server performs the record operation, modifying the target resource as requested by the attacker.
Impact
Successful exploitation allows any authenticated user to bypass all configured security policies, granting them write access to sensitive records and administrative data. Impact includes full data integrity loss, unauthorized privilege escalation if permission records are stored in deepstream, and potential application-level denial of service due to record corruption. Only deployments configured with permission.type: 'config' are affected.
Recommendation
- Upgrade all instances of
@deepstream/serverto the version containing the fix for CVE-2026-63116. - If an immediate upgrade is not possible, apply a manual patch to
src/services/permission/valve/rules-map.tsto include[RECORD_ACTION.PATCH_MULTI]: RULE_TYPES.WRITE. - Audit application record logs for suspicious
PATCH_MULTIoperations originating from low-privilege service accounts or users. - Implement strict network-level segmentation to limit the reach of authenticated users to internal deepstream management records.
Immediate actions
Upgrade deepstream/server to 10.1.1 or later
Mitigations
Manually register PATCH_MULTI in RULES_MAP if upgrade is delayed
CVE-2026-63116