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



GHSA-RQPP-RJJ8-7WV8

GHSA-RQPP-RJJ8-7WV8: Privilege Escalation via Logic Flaw in OpenClaw WebSocket Authentication

Alon Barad
Alon Barad
Software Engineer

Mar 14, 2026·6 min read·102 visits

Executive Summary (TL;DR)

OpenClaw versions 2026.3.11 and prior fail to strip client-declared scopes during WebSocket handshakes for shared-token connections, permitting low-privilege users to obtain 'operator.admin' access.

A critical logic flaw in the OpenClaw gateway's WebSocket authentication mechanism allows remote attackers authenticated via shared secrets to arbitrarily elevate their authorization scopes to administrative levels.

Vulnerability Overview

The OpenClaw gateway exposes a WebSocket endpoint for backend connectivity and management operations. This endpoint accepts various authentication mechanisms, including device-linked identities, Control UI session tokens, and shared secrets (passwords or static tokens). Shared secrets are explicitly designed for low-privilege, device-less connections, operating under strict role-based access control (RBAC) boundaries.

A critical logic flaw exists in the gateway's WebSocket connection handler, cataloged as Improper Privilege Management (CWE-269) and Missing Authorization (CWE-862). The vulnerability resides in the scope negotiation phase of the WebSocket handshake, where the server fails to properly sanitize the authorization scopes requested by the connecting client.

By exploiting this oversight, a client authenticated with a standard shared token can self-declare elevated privileges, such as the operator.admin scope. The gateway erroneously binds these requested scopes to the established session, granting the attacker full administrative capabilities without requiring a trusted device identity or Control UI authorization.

Furthermore, when the gateway is configured in trusted-proxy mode, this vulnerability facilitates a secondary attack vector via Cross-Site WebSocket Hijacking (CSWSH). A malicious website can coerce an authenticated victim's browser into initiating the flawed handshake, extending the administrative compromise to unauthorized remote sessions.

Root Cause Analysis

The root cause is a flawed conditional check in the attachGatewayWsMessageHandler function, located within src/gateway/server/ws-connection/message-handler.ts. During the WebSocket initialization sequence, clients submit a connectParams object that contains an array of requested scopes.

The OpenClaw gateway employs a helper function named clearUnboundScopes() to strip sensitive or unauthorized scopes from device-less connections. This function is intended to enforce the principle of least privilege by ensuring that shared-token authentications cannot arbitrarily request administrative roles.

The logic error stems from the inclusion of the !sharedAuthOk boolean flag in the condition determining whether scopes should be cleared. When a client successfully authenticates using a valid shared token or password, the sharedAuthOk variable evaluates to true.

Consequently, the condition !sharedAuthOk evaluates to false, causing the application to bypass the scope-clearing routine entirely. The gateway then proceeds to establish the WebSocket session using the raw, unvalidated scopes array provided by the client in the connectParams payload.

Code Analysis

An analysis of the vulnerable implementation in src/gateway/server/ws-connection/message-handler.ts reveals the exact mechanism of the bypass. The clearUnboundScopes function was defined as follows:

const clearUnboundScopes = () => {
  if (scopes.length > 0 && !controlUiAuthPolicy.allowBypass && !sharedAuthOk) {
    scopes = [];
    connectParams.scopes = scopes;
  }
};

In this vulnerable state, any successful shared-secret authentication (sharedAuthOk === true) prevents the array from being zeroed out. The attacker simply provides scopes: ["operator.admin"] in the initial payload, and the server retains it.

The patch introduced in commit 5e389d5e7c9233ec91026ab2fea299ebaf3249f6 implements a strict, deny-by-default architecture. The clearUnboundScopes function was refactored to unconditionally execute the clearing action when invoked:

// Refactored helper function
const clearUnboundScopes = () => {
  scopes = [];
  connectParams.scopes = scopes;
};

The authorization logic dictating when this function is called was subsequently moved up the call stack to a centralized policy check. The gateway now evaluates the connection context and explicitly clears scopes for any device-less connection that does not originate from a verified Control UI session:

// New centralized authorization check
if (!device && (!isControlUi || decision.kind !== "allow")) {
  clearUnboundScopes();
}

This structural change ensures that shared-token authentications can no longer bypass scope sanitization, closing the privilege escalation vector.

Exploitation Methodology

Exploitation requires the attacker to possess a valid shared secret, such as a gateway token or a password, and network connectivity to the OpenClaw WebSocket endpoint. The attacker does not require prior administrative privileges or a registered device identity.

The attacker initiates a standard WebSocket connection to the gateway. During the handshake phase, the attacker transmits a JSON-formatted connection request payload. This payload specifically sets the device parameter to null to indicate a device-less connection, provides the valid shared secret in the token field, and injects the target elevated scopes into the scopes array.

Because the vulnerable gateway processes the valid token and skips the scope-stripping routine, the session is instantiated with the injected scopes. The attacker can immediately begin issuing administrative Remote Procedure Call (RPC) commands over the WebSocket tunnel.

The following proof-of-concept snippet demonstrates the precise payload structure and the subsequent execution of an administrative command (set-heartbeats):

const res = await connectReq(ws, {
  token: "secret", // Valid shared token
  scopes: ["operator.admin"], // Injected elevated scope
  device: null,
});
 
// Session is now authenticated with 'operator.admin' privileges
const adminRes = await rpcReq(ws, "set-heartbeats", { enabled: false });

Impact Assessment

The vulnerability carries a CVSS v3.1 base score of 9.9 (Critical), reflecting a total compromise of the application's authorization framework. Successful exploitation grants an unprivileged user complete administrative control over the OpenClaw gateway operations.

With operator.admin scopes, an attacker can execute arbitrary gateway commands. Documented capabilities include overriding machine learning models, modifying system status metrics, and manipulating task execution workflows. This level of access severely compromises both the integrity and availability of the gateway and any downstream dependent services.

The presence of this flaw in environments using trusted-proxy mode exacerbates the risk footprint. In this configuration, the Cross-Site WebSocket Hijacking (CSWSH) vector allows remote adversaries to weaponize an authorized user's active session state without directly compromising their credentials.

By tricking a victim into visiting a malicious webpage, the attacker can leverage the victim's browser to initiate the malformed WebSocket handshake. The resulting connection seamlessly bypasses intended authorization boundaries, rendering perimeter defenses and credential rotation policies ineffective against the resulting privilege escalation.

Remediation and Mitigation

The primary remediation for this vulnerability is upgrading the openclaw npm package to version 2026.3.12 or later. This release incorporates the logic fix that unconditionally clears unbound scopes for all device-less, non-Control UI connections, effectively neutralizing the privilege escalation path.

Organizations should verify the deployment of the patched version by inspecting the package.json and lockfiles within their operational environments. Restarting the OpenClaw gateway service is required to ensure the updated code is actively handling incoming WebSocket connections.

For environments where immediate patching is not feasible, administrators must restrict network access to the OpenClaw gateway. Implement strict IP allowlists, enforce VPN connectivity, or disable shared-token authentication mechanisms entirely in favor of device-linked identities.

Furthermore, security teams should analyze gateway access logs for historical evidence of exploitation. Indicators of compromise include WebSocket connect messages originating from device-less sessions (device: null) that anomalously request operator.admin or other privileged scopes. Auditing RPC execution logs for administrative commands invoked by shared-token identities is also recommended.

Official Patches

OpenClawFix commit implementing strict deny-by-default scope clearing
OpenClawPull Request containing the vulnerability fix
OpenClawRelease Notes for patched version 2026.3.12

Fix Analysis (1)

Technical Appendix

CVSS Score
9.9/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

Affected Systems

OpenClaw Gateway WebSocket Endpointopenclaw npm package

Affected Versions Detail

Product
Affected Versions
Fixed Version
openclaw
OpenClaw
<= 2026.3.112026.3.12
AttributeDetail
CWE IDCWE-269, CWE-862
Attack VectorNetwork
CVSS Base Score9.9
ImpactAdministrative Privilege Escalation
Exploit StatusProof of Concept Available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
T1548Abuse Elevation Control Mechanism
Privilege Escalation
T1557.003Cross-Site WebSocket Hijacking
Credential Access
CWE-269
Improper Privilege Management

Improper Privilege Management and Missing Authorization

Known Exploits & Detection

Regression TestsProof of Concept demonstrating WebSocket connection with self-declared scopes and RPC execution.

Vulnerability Timeline

Fix commit 5e389d5e7c pushed to the main repository
2026-03-12
OpenClaw patched version 2026.3.12 released
2026-03-12
Security Advisory GHSA-rqpp-rjj8-7wv8 published
2026-03-13

References & Sources

  • [1]GitHub Advisory: GHSA-rqpp-rjj8-7wv8
  • [2]OSV Record
  • [3]OpenClaw Security Advisory

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 12 hours ago•CVE-2026-39922
6.3

CVE-2026-39922: Server-Side Request Forgery in GeoNode Service Registration Endpoint

GeoNode versions prior to 4.4.5 and 5.0.2 are vulnerable to Server-Side Request Forgery (SSRF) in the service registration endpoint. Authenticated attackers with low privileges can exploit insufficient input validation in the Web Map Service (WMS) registration module to force the application server to make outbound network queries to loopback addresses, private RFC1918 subnets, link-local scopes, and cloud metadata endpoints. This technical report details the mechanics of the vulnerability, the underlying architectural flaw, and how to effectively remediate and mitigate the associated security risks.

Alon Barad
Alon Barad
4 views•7 min read
•about 22 hours ago•CVE-2022-0492
7.8

CVE-2022-0492: Privilege Escalation and Container Escape via cgroups v1 release_agent

CVE-2022-0492 is a high-severity missing authorization vulnerability in the Linux kernel's Control Groups (cgroups) v1 implementation. The flaw resides within the cgroup_release_agent_write function in kernel/cgroup/cgroup-v1.c, where the kernel fails to validate if the process writing to the release_agent file possesses administrative capabilities in the initial user namespace. This allows a local attacker inside a container with root privileges (UID 0) to abuse user namespaces, mount a cgroups v1 directory, modify the release_agent parameter, and execute arbitrary commands on the host system as host root, effectively achieving a complete container escape.

Amit Schendel
Amit Schendel
8 views•7 min read
•3 days ago•GHSA-G72G-R7M4-9X4G
6.3

GHSA-G72G-R7M4-9X4G: Insufficient Session Expiration of OAuth Tokens in NocoDB

NocoDB is subject to an insufficient session expiration vulnerability where OAuth access and refresh tokens are not invalidated or revoked during security-sensitive actions such as password changes, forgot-password requests, or password resets. This allows an attacker possessing an active OAuth token to maintain unauthorized persistence.

Amit Schendel
Amit Schendel
12 views•6 min read
•3 days ago•GHSA-FGMC-2HQJ-86V4
6.9

GHSA-FGMC-2HQJ-86V4: Default Administrative Credentials in vantage6-server

A vulnerability in the vantage6 federated learning framework allows unauthenticated remote attackers to gain administrative control of the server via hardcoded default credentials (root/root) when deployed under default configurations in versions 4.2.3 and below.

Amit Schendel
Amit Schendel
8 views•5 min read
•3 days ago•GHSA-X9F6-9RVM-MMRG
6.9

GHSA-X9F6-9RVM-MMRG: Improper Access Control and Volume Mount Isolation Bypass in vantage6 Node

An improper access control vulnerability in the vantage6 node component allows concurrently running algorithm containers to read and modify sensitive input and output files of other tasks. The lack of strict workspace directory isolation exposes a significant attack surface in multi-tenant or federated environments where untrusted algorithms are executed.

Amit Schendel
Amit Schendel
3 views•4 min read
•3 days ago•CVE-2026-47760
8.7

CVE-2026-47760: Cross-Site Scripting (XSS) via SVG Namespace Sanitizer Bypass in TinyMCE

TinyMCE versions 6.8.0 through 7.0.1 contain a high-severity Cross-Site Scripting (XSS) vulnerability. The flaw exists in the custom HTML parser and sanitizer module, which incorrectly manages SVG namespace scopes when parsing nested elements. A low-privileged or unauthenticated attacker can submit a crafted HTML payload containing nested SVG structures to bypass sanitization filters, leading to arbitrary JavaScript execution in the context of the victim's browser session.

Alon Barad
Alon Barad
30 views•7 min read