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-5JVJ-HXMH-6H6J

GHSA-5JVJ-HXMH-6H6J: Authorization Bypass in OpenClaw Gateway HTTP Session History

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 29, 2026·5 min read·28 visits

Executive Summary (TL;DR)

An authorization bypass in the openclaw npm package allows any user with a valid Bearer token to read session chat histories via the HTTP API, bypassing the strict `operator.read` scope requirements enforced on the equivalent WebSocket interface.

The OpenClaw Gateway HTTP API contains an incorrect authorization implementation that fails to enforce operator read scopes on the session history route. This flaw allows users with low-privileged authentication tokens to read sensitive chat transcripts that should be restricted to operators with explicit read permissions.

Vulnerability Overview

The openclaw package provides a Gateway component responsible for managing and routing chat session data. This component exposes functionality through two distinct transport protocols: WebSockets for real-time remote procedure calls (RPC) and standard HTTP REST endpoints for state retrieval.

The vulnerability, tracked as GHSA-5JVJ-HXMH-6H6J, exists within the HTTP implementation of the session history retrieval route. It is classified as CWE-863 (Incorrect Authorization). The system enforces strict scope-based access controls on the WebSocket interface but fails to replicate these checks on the equivalent HTTP endpoints.

This inconsistency creates an authorization bypass. An attacker possessing a valid authentication token with zero or restricted scopes can query the HTTP API directly to access protected resources. The system incorrectly validates the presence of the token without verifying the permissions associated with it.

Root Cause Analysis

The underlying flaw stems from an architectural divergence in how authorization policies are applied across different transport layers. The OpenClaw Gateway implements a scope-based access control model where specific operations require explicit scopes, such as the operator.read scope for accessing chat transcripts.

When a client requests the chat.history resource via the WebSocket interface, the Gateway routes the request through a centralized authorization handler. This handler inspects the operator's authenticated session, extracts the granted scopes, and validates them against the required operator.read policy before executing the function.

Conversely, the HTTP route handler for /sessions/:sessionKey/history implements a disparate authorization flow. The HTTP handler validates that a well-formed Bearer token is present in the Authorization header, confirming the user's identity. However, it omits the critical secondary step of checking whether the authenticated user possesses the operator.read scope necessary to read the requested session history.

Code Analysis

Prior to the patch, the handleSessionHistoryHttpRequest function solely relied on a middleware layer that verified token authenticity. The explicit mapping between the HTTP endpoint and the required authorization scope was missing from the route definition.

Commit 1c45123231516fa50f8cf8522ba5ff2fb2ca7aea addresses this omission by explicitly synchronizing the HTTP authorization logic with the WebSocket RPC requirements. The patch introduces a new mechanism to resolve requested operator scopes from HTTP headers.

The developers implemented a new function, resolveGatewayRequestedOperatorScopes, which parses a newly introduced custom header, x-openclaw-scopes. The handleSessionHistoryHttpRequest function was then modified to invoke authorizeOperatorScopesForMethod("chat.history", requestedScopes) before processing the request.

// PATCHED: handleSessionHistoryHttpRequest (Conceptual abstraction based on commit 1c451232)
 
export async function handleSessionHistoryHttpRequest(req, res) {
  // 1. Authenticate the token (Original logic)
  const token = verifyBearerToken(req.headers.authorization);
  
  // 2. Parse requested scopes from the new custom header (New logic)
  const requestedScopes = resolveGatewayRequestedOperatorScopes(req.headers['x-openclaw-scopes']);
  
  // 3. Explicitly verify the token holds the required scope for this method (New logic)
  const isAuthorized = authorizeOperatorScopesForMethod("chat.history", requestedScopes, token);
  
  if (!isAuthorized) {
    return res.status(403).json({
      ok: false,
      error: { type: "forbidden", message: "missing scope: operator.read" }
    });
  }
  
  // 4. Proceed with returning history
  return res.status(200).json(getHistory(req.params.sessionKey));
}

Exploitation Methodology

Exploiting this authorization bypass requires two prerequisites. The attacker must possess network connectivity to the OpenClaw Gateway HTTP API, and they must hold a valid Bearer token issued by the system. The token does not require any specific administrative scopes.

The attack is executed by formulating a standard HTTP GET request directed at the /sessions/:sessionKey/history endpoint. The attacker bypasses the secure WebSocket interface entirely, capitalizing on the missing scope enforcement in the REST handler.

The resulting payload is straightforward. The attacker passes their low-privileged token in the Authorization header and requests a target session key. The server responds with a 200 OK status and the complete JSON transcript of the requested chat session.

GET /sessions/agent:main:main/history HTTP/1.1
Host: gateway.openclaw.internal
Authorization: Bearer <VALID_LOW_PRIV_TOKEN>
Accept: application/json

Impact Assessment

The primary impact of this vulnerability is a breach of data confidentiality. Chat transcripts often contain sensitive information, including personally identifiable information (PII), proprietary business logic, or operational credentials shared during support sessions.

The vulnerability enables horizontal privilege escalation. A compromised low-privilege account, such as a basic user or a restricted integration bot, can view the interaction history of other users and administrators within the system.

The scope of the exposure is bounded by the nature of the endpoint. The flaw permits unauthorized read access to historical data but does not grant arbitrary write capabilities, system configuration modification, or remote code execution. The integrity and availability of the gateway service remain unaffected.

Remediation and Mitigation

The definitive remediation strategy is to upgrade the openclaw package to version 2026.3.25 or later. This release contains the complete patch that enforces the operator.read scope on the HTTP session history route.

Deploying the patch necessitates configuration changes for client applications interacting with the HTTP API. Clients must be updated to include the new x-openclaw-scopes custom header in their requests; failure to do so will result in legitimate requests being rejected with a 403 Forbidden error.

Development teams maintaining applications built on OpenClaw should conduct a systematic review of all dual-transport routes. Any endpoint accessible via both WebSocket and HTTP must be audited to ensure authorization policies are applied uniformly across both interfaces.

Official Patches

OpenClawOfficial Security Advisory
GitHubGitHub Advisory Database Entry

Fix Analysis (1)

Technical Appendix

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

Affected Systems

OpenClaw Gateway HTTP APIopenclaw npm package

Affected Versions Detail

Product
Affected Versions
Fixed Version
openclaw
OpenClaw
<= 2026.3.242026.3.25
AttributeDetail
CWE IDCWE-863
Attack VectorNetwork (HTTP)
Authentication RequiredYes (Low Privilege)
ImpactConfidentiality (High)
Exploit StatusProof-of-Concept Available
CVSSv3 Score5.3

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1538Cloud Service Dashboard
Discovery
CWE-863
Incorrect Authorization

The software performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly perform the check.

Known Exploits & Detection

Public CommitThe patch commit contains details and testing reproduction methods outlining the attack.

Vulnerability Timeline

Vulnerability publicly disclosed and GitHub Advisory published
2026-03-26
Fix commit 1c451232 pushed to the repository
2026-03-26
Patched version 2026.3.25 released
2026-03-26

References & Sources

  • [1]GitHub Advisory: GHSA-5JVJ-HXMH-6H6J
  • [2]OpenClaw Security Advisory
  • [3]Fix Commit: 1c451232

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 22 hours ago•CVE-2026-55699
6.5

CVE-2026-55699: Arbitrary Directory Deletion via Path Traversal in pnpm globalBinDir Resolver

CVE-2026-55699 (also identified as GHSA-4gxm-v5v7-fqc4) is a critical path traversal and arbitrary directory deletion vulnerability in the pnpm package manager. The issue exists because the manifest validation process fails to prevent relative path segments within the package 'bin' keys. When a malicious package containing structured path traversal markers is globally installed and later manipulated, pnpm resolves the target paths through path.join() and passes the resolved paths to a recursive deletion function, resulting in arbitrary directory removal.

Amit Schendel
Amit Schendel
7 views•6 min read
•1 day ago•CVE-2026-55700
7.1

CVE-2026-55700: Path Traversal and Arbitrary File Write in pnpm stage download

A path traversal vulnerability in pnpm stage download allows malicious registries or compromised package manifests to overwrite arbitrary files on the victim's filesystem via unvalidated package name and version fields.

Alon Barad
Alon Barad
8 views•4 min read
•1 day ago•GHSA-WW5P-J6CJ-6MQQ
5.5

GHSA-WW5P-J6CJ-6MQQ: Credential Exposure in Nezha Dashboard DDNS and Notification APIs

GHSA-WW5P-J6CJ-6MQQ is a technical credential exposure vulnerability in Nezha Dashboard prior to version 2.2.5. The vulnerability allows authenticated administrative users or actors possessing scoped read-only Personal Access Tokens (PATs) to exfiltrate plaintext third-party API credentials, secret keys, and webhook authorization headers due to a lack of data redaction during API object serialization.

Amit Schendel
Amit Schendel
6 views•7 min read
•1 day ago•GHSA-FR4H-3CPH-29XV
7.1

GHSA-FR4H-3CPH-29XV: Path Traversal and Directory Hijacking in pnpm and pacquet Dependency Resolution

GHSA-FR4H-3CPH-29XV is a high-severity path traversal vulnerability in pnpm and its Rust-based port pacquet. The flaw manifests when using the hoisted node-linker configuration, allowing an attacker to manipulate the lockfile to resolve relative traversal sequences or target reserved subdirectories, leading to arbitrary file write or execution hijacking.

Amit Schendel
Amit Schendel
6 views•8 min read
•1 day ago•GHSA-72R4-9C5J-MJ57
7.1

GHSA-72R4-9C5J-MJ57: Arbitrary File Deletion via Path Traversal in pnpm patch-remove

A path traversal vulnerability in the pnpm package manager's 'patch-remove' command allows an attacker to delete arbitrary files outside the patches directory. By manipulating configuration files like package.json, an attacker can specify a traversal path that the application deletes recursively without validating the path's containment.

Alon Barad
Alon Barad
6 views•5 min read
•1 day ago•GHSA-QRV3-253H-G69C
8.3

GHSA-QRV3-253H-G69C: Path Traversal and Arbitrary Symlink Creation via configDependencies in pnpm

A high-severity path traversal vulnerability exists in the pnpm package manager. By crafting a malicious lockfile (pnpm-lock.yaml) with path traversal characters in the configDependencies block, an attacker can create arbitrary directories and symlinks outside the project's node_modules/.pnpm-config directory. This exploitation happens automatically during pnpm installation, even when executing with scripts disabled via the --ignore-scripts flag.

Amit Schendel
Amit Schendel
6 views•7 min read