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-QM2M-28PF-HGJW

GHSA-QM2M-28PF-HGJW: Privilege Escalation via Incorrect Scope Assignment in OpenClaw Gateway Plugin

Alon Barad
Alon Barad
Software Engineer

Mar 27, 2026·6 min read·25 visits

Executive Summary (TL;DR)

OpenClaw incorrectly grants 'operator.admin' privileges to any authenticated user who accesses a protected plugin route. Attackers with restricted credentials can exploit this to perform unauthorized administrative actions.

The OpenClaw personal AI assistant framework contains a high-severity privilege escalation vulnerability in its Gateway Plugin HTTP request handling. Versions prior to 2026.3.26 incorrectly grant administrative runtime scopes to any successfully authenticated caller accessing a protected plugin route. This architectural flaw allows low-privileged users to bypass role-based access controls and execute administrative actions, including session termination and unauthorized device pairing.

Vulnerability Overview

OpenClaw relies on a Gateway Plugin architecture to manage HTTP request handling and route authentication. The vulnerability exists within the runtime client instantiation phase of this plugin system, specifically affecting routes that enforce Gateway authentication. The core issue is a CWE-266 (Incorrect Privilege Assignment) combined with CWE-863 (Incorrect Authorization) flaw, where the system incorrectly conflates route admission with runtime permission elevation.

When an HTTP request triggers a plugin route configured to require Gateway authentication, the system must generate a runtime client context to execute the handler. In vulnerable versions, the framework automatically minted this context with full administrative privileges (operator.admin) for any successfully authenticated caller. This design violated the Principle of Least Privilege by failing to evaluate the specific authorization level of the requesting user.

The resulting privilege escalation allows any authenticated entity, regardless of their assigned role, to perform administrative actions. An attacker with a restricted account can leverage this flaw to interact with protected plugin routes and execute privileged functions, bypassing intended access controls entirely. The vulnerability affects all deployments utilizing the Gateway plugin for HTTP route management in OpenClaw versions up to 2026.3.24.

Root Cause Analysis

The vulnerability originates in the createPluginRouteRuntimeClient function within src/gateway/server/plugins-http.ts. This function is responsible for determining the authorization scopes granted to the runtime client when executing a plugin's HTTP route handler. The implementation relied on a flawed ternary operator logic that evaluated the authentication status rather than the authorization claims of the caller.

The system checked two parameters: requiresGatewayAuth and gatewayAuthSatisfied. If a route required authentication and the caller successfully authenticated, the function automatically assigned an array containing ADMIN_SCOPE, APPROVALS_SCOPE, and PAIRING_SCOPE. This static assignment effectively hardcoded an administrative authorization grant for any valid session reaching a protected endpoint.

This architectural defect stems from conflating authentication (identity verification) with authorization (access rights). The Gateway's authentication mechanism correctly verified that the caller possessed a valid account. However, the subsequent authorization logic failed to query the caller's specific permission model, opting instead to blanket-grant the highest available privilege level to facilitate plugin execution.

Code Analysis

Analyzing the source code reveals the direct privilege assignment flaw. The original implementation of createPluginRouteRuntimeClient instantiated the runtime client with a conditional scope assignment based purely on route configuration and authentication success. This bypasses any granular capability checks.

function createPluginRouteRuntimeClient(params: {
  requiresGatewayAuth: boolean;
  gatewayAuthSatisfied?: boolean;
}): GatewayRequestOptions["client"] {
  // VULNERABLE: Grants ADMIN_SCOPE based on authentication alone
  const scopes =
    params.requiresGatewayAuth && params.gatewayAuthSatisfied !== false
      ? [ADMIN_SCOPE, APPROVALS_SCOPE, PAIRING_SCOPE] // Corresponds to operator.admin
      : [WRITE_SCOPE]; // Corresponds to operator.write
  // ... returns client object with these scopes
}

The patch, introduced in commit ec2dbcff9afd8a52e00de054b506c91726d9fbbe, completely removes the conditional privilege elevation. The developers identified that plugin HTTP handlers do not inherently require administrative scopes for standard operation. The route authentication mechanism was fully decoupled from the runtime client's authorization scope.

function createPluginRouteRuntimeClient(): GatewayRequestOptions["client"] {
  // PATCHED: Hardcodes least-privilege scope for all plugin route executions
  // Gateway route auth controls request admission, not runtime admin elevation.
  const scopes = [WRITE_SCOPE];
  return {
    connect: {
      minProtocol: PROTOCOL_VERSION,
      // ...
      scopes
    }
  };
}

By hardcoding the scope to WRITE_SCOPE (operator.write), the framework guarantees that plugin executions run with the minimum necessary privileges. Administrative elevation now requires explicit authorization checks elsewhere in the codebase, preventing horizontal and vertical privilege escalation via the HTTP Gateway.

Exploitation Methodology

Exploitation requires the attacker to possess valid, low-privileged credentials for the OpenClaw Gateway. The attacker must first identify an active plugin within the target environment that registers an HTTP route utilizing the auth: "gateway" configuration directive. This route acts as the entry point for the privilege escalation vector.

Once a suitable route is identified, the attacker authenticates to the Gateway using their restricted credentials. The attacker then crafts an HTTP request targeting the plugin's protected route. Because the request originates from an authenticated session, the Gateway's admission controller marks the gatewayAuthSatisfied parameter as true.

Upon request processing, the OpenClaw server invokes the vulnerable createPluginRouteRuntimeClient function. The function evaluates the authentication state and incorrectly mints a runtime client equipped with ADMIN_SCOPE. The attacker's request is subsequently processed by the plugin handler within this highly privileged execution context.

Within this elevated context, the attacker can leverage the plugin's functionality to perform actions restricted to the operator.admin scope. Depending on the specific capabilities of the invoked plugin, this can lead to arbitrary session termination (sessions.delete), manipulation of system approval workflows, or the unauthorized pairing of new devices to the OpenClaw instance.

Impact Assessment

The primary impact of this vulnerability is a complete vertical privilege escalation from any authenticated user to an administrative role within the context of plugin execution. The system's failure to enforce granular authorization boundaries severely compromises the integrity of the OpenClaw environment.

An attacker successfully exploiting this flaw gains the ability to bypass all intended role-based access controls (RBAC). The unauthorized acquisition of ADMIN_SCOPE, APPROVALS_SCOPE, and PAIRING_SCOPE provides direct control over critical operational mechanisms. Attackers can terminate active sessions of legitimate administrators, effectively causing a targeted denial of service or facilitating session hijacking.

Furthermore, the ability to override system configurations and pair unauthorized devices introduces severe persistence risks. An attacker can register rogue devices to maintain administrative access even if the original low-privileged account is disabled or the vulnerability is subsequently patched. This level of access grants total control over the OpenClaw instance's administrative functions.

Remediation and Mitigation

The definitive remediation for this vulnerability is upgrading the OpenClaw framework to version 2026.3.26 or later. The patch fundamentally resolves the architectural flaw by enforcing a static, least-privilege WRITE_SCOPE assignment for all plugin HTTP runtime clients. Administrators must prioritize this update for any internet-facing or multi-tenant OpenClaw deployments.

If immediate patching is not feasible, organizations can implement interim mitigation strategies. Administrators should audit all active plugins and temporarily disable any non-essential plugins that expose HTTP routes requiring Gateway authentication. This reduces the available attack surface and eliminates potential execution vectors for the privilege escalation.

Additionally, security teams should implement robust monitoring of the Gateway server logs. Prior to patching, administrators can detect potential exploitation attempts by monitoring for anomalous administrative actions originating from low-privileged accounts or unexpected sessions.delete invocations. Static code analysis tools should also be deployed to verify that custom plugins do not improperly rely on requiresGatewayAuth as a surrogate for true administrative authorization.

Official Patches

OpenClawPull Request containing the remediation

Fix Analysis (1)

Technical Appendix

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

Affected Systems

OpenClaw Gateway PluginOpenClaw HTTP Plugin Architecture

Affected Versions Detail

Product
Affected Versions
Fixed Version
openclaw
OpenClaw
<= 2026.3.242026.3.26
AttributeDetail
CWE IDCWE-266, CWE-863
Attack VectorNetwork
ImpactPrivilege Escalation
Exploit StatusProof of Concept
CVSS Score8.8
Requires AuthenticationYes (Low Privilege)

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
T1078Valid Accounts
Initial Access
CWE-266
Incorrect Privilege Assignment

A product incorrectly assigns privileges to a user or entity, providing them with capabilities outside of their intended permissions.

Vulnerability Timeline

Vulnerability confirmed in version 2026.3.24
2026-03-24
Fix commit merged and version 2026.3.26 released
2026-03-26
Public disclosure via GitHub Advisory
2026-03-27

References & Sources

  • [1]GitHub Advisory: GHSA-QM2M-28PF-HGJW
  • [2]Repository Security Page
  • [3]Fix Commit
  • [4]Pull Request
  • [5]NPM Package Release

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 2 hours ago•CVE-2026-71556
7.1

CVE-2026-71556: Symbolic Link Directory Traversal in go-git

A symbolic link directory traversal vulnerability was identified in go-git, a pure Go implementation of the Git specification. This vulnerability allows an attacker to construct a repository that, when checked out or processed, bypasses directory boundaries to write or overwrite arbitrary files on the host filesystem.

Amit Schendel
Amit Schendel
2 views•5 min read
•about 3 hours ago•CVE-2026-71557
6.3

CVE-2026-71557: Path Traversal and Configuration Overwrite in go-git Filesystem Storage Engine

CVE-2026-71557 is a path traversal vulnerability in go-git, a pure-Go implementation of Git. In vulnerable versions, the filesystem-backed storage engine fails to validate reference names before mapping them to on-disk paths. An attacker hosting a malicious Git server can advertise references containing directory traversal sequences, such as 'refs/heads/../../config', to write or overwrite files outside the intended reference storage directory.

Amit Schendel
Amit Schendel
2 views•7 min read
•about 4 hours ago•GHSA-7C4V-FWGW-9RF7
5.3

GHSA-7c4v-fwgw-9rf7: Nuxt Dev Server Discloses Project Root and Workspace UUID via Chrome DevTools Endpoint

An information disclosure vulnerability in the Nuxt development server allows adjacent network attackers to retrieve the absolute project root directory and a persistent workspace UUID by querying the unprotected Chrome DevTools workspace endpoint. This occurs when the development server is bound to a network-reachable interface, allowing requests that bypass the header-based security verification checks.

Alon Barad
Alon Barad
2 views•7 min read
•about 5 hours ago•CVE-2026-66062
5.3

CVE-2026-66062: Regular Expression Denial of Service (ReDoS) in SvelteKit Content Negotiation

A Regular Expression Denial of Service (ReDoS) vulnerability exists in SvelteKit's content negotiation header parser prior to version 2.70.2. An unauthenticated remote attacker can exploit this vulnerability by sending a crafted Accept header with highly repetitive malformed values. This triggers catastrophic backtracking on the single-threaded Node.js/Bun event loop, leading to CPU exhaustion and full denial of service.

Alon Barad
Alon Barad
3 views•6 min read
•about 6 hours ago•CVE-2026-15895
8.4

CVE-2026-15895: OS Command Injection in AWS jsii-diff CLI

An OS command injection vulnerability exists in the npm package loading component of the jsii-diff CLI tool within the AWS jsii framework. Prior to version 1.131.0, when parsing package specifiers prefixed with `npm:`, the tool concatenated user-controlled inputs directly into a shell execution string via child_process.exec. This allows attackers to execute arbitrary shell commands under the context of the running Node.js process.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 7 hours ago•CVE-2026-63220
4.8

CVE-2026-63220: Trust of Untrusted Reverse Proxy Headers in CodeIgniter4

CodeIgniter4 versions prior to v4.7.4 contain a protocol-spoofing vulnerability due to improper verification of upstream reverse proxy forwarding headers. Remote, unauthenticated attackers can inject headers like X-Forwarded-Proto to deceive the framework into identifying an insecure HTTP request as a secure HTTPS connection.

Alon Barad
Alon Barad
5 views•7 min read