Mar 3, 2026·6 min read·34 visits
Authenticated nodes can bypass command restrictions by lying about their device type (e.g., claiming to be Linux instead of iOS) during reconnection. Fixed in version 2026.2.26 via metadata pinning and updated cryptographic signatures.
A critical authorization bypass vulnerability exists in the OpenClaw Gateway authentication mechanism. The flaw allows authenticated nodes to spoof device metadata—specifically the platform and device family—during reconnection events. By modifying these parameters, a compromised or malicious node can bypass command execution policies that restrict capabilities based on device type (e.g., escalating from a restricted mobile client to a privileged server node). This issue affects all versions prior to 2026.2.26.
OpenClaw utilizes a distributed architecture where nodes (clients) connect to a central Gateway. To manage security across diverse endpoints, the system implements "node command policies." These policies restrict the execution of sensitive commands based on the node's declared platform (e.g., linux, darwin, ios) and deviceFamily. For instance, a mobile device paired as android might be restricted to UI updates, while a linux node is permitted to execute shell commands via system.run.
The vulnerability resides in the Gateway's failure to cryptographically bind these metadata fields to the node's identity during the authentication handshake. Specifically, the protocol trusted the client-supplied metadata during reconnection events without verifying it against the initial pairing record. This allowed an attacker in possession of a valid node identity (private key) to alter their reported platform type arbitrarily.
By spoofing this metadata, an attacker can effectively bypass the policy engine. A node originally authorized only for low-privilege operations can reconnect, identify itself as a high-privilege platform, and execute arbitrary commands previously forbidden by the administrator's policy configuration.
The root cause is a lack of integrity protection for device metadata in the version 2 (v2) authentication signature. The OpenClaw Gateway uses a custom signature scheme to authenticate nodes. In the vulnerable implementation, the v2 payload included critical identity fields such as deviceId, clientId, role, and scopes, but omitted platform and deviceFamily.
When a node reconnected to the Gateway:
platform and deviceFamily as plain parameters.platform and updated the session state, disregarding the metadata recorded during the initial Trust-On-First-Use (TOFU) pairing.Because these fields were excluded from the signature and not pinned server-side, the server effectively allowed clients to redefine their device characteristics on every connection. This represents a classic integrity failure where authorization decisions are made based on untrusted, user-controlled input.
The remediation introduced two key changes: a new signature version (v3) and server-side metadata pinning. The v3 signature now explicitly includes the platform metadata in the signed payload, preventing tampering during transit for updated clients.
The following TypeScript code demonstrates the introduction of the v3 payload in src/gateway/device-auth.ts. Note the addition of platform and deviceFamily to the pipe-delimited string before signing.
// FIXED CODE: src/gateway/device-auth.ts
export function buildDeviceAuthPayloadV3(params: DeviceAuthPayloadV3Params): string {
const scopes = params.scopes.join(",");
const token = params.token ?? "";
// Normalization ensures consistency (trim + lowercase)
const platform = normalizeMetadataField(params.platform);
const deviceFamily = normalizeMetadataField(params.deviceFamily);
// The payload now binds the platform metadata to the cryptographic signature
return [
"v3",
params.deviceId,
params.clientId,
params.clientMode,
params.role,
scopes,
String(params.signedAtMs),
token,
params.nonce,
platform, // <--- ADDED
deviceFamily, // <--- ADDED
].join("|");
}Beyond the signature update, the critical fix logic resides in the Gateway's session handler. The server now retrieves the platform and deviceFamily stored during the initial pairing and compares them against the incoming connection request. If a mismatch is detected (e.g., an ios device claiming to be linux), the server rejects the metadata update or logs a security audit event (metadata-upgrade), enforcing the principle that a device's physical nature should not change after pairing.
To exploit this vulnerability, an attacker requires a valid node identity (private key) that has already been paired with the Gateway. The attack vector does not require a compromised server, but rather a compromised or malicious client.
device.key and pairing credentials from a legitimate low-privilege device (e.g., an iPad kiosk running OpenClaw).platform parameter to linux or server, while generating a valid v2 signature using the legitimate key.system.run) which the policy engine permits for linux endpoints but denies for ios.The impact of this vulnerability is High, primarily affecting the integrity and authorization controls of the OpenClaw ecosystem.
system.run or similar commands for specific platforms (like Linux/macOS), an attacker spoofing those platforms achieves arbitrary code execution on the Gateway or connected nodes, depending on the command architecture.This vulnerability is particularly dangerous in mixed-fleet environments where high-trust and low-trust devices coexist on the same network fabric.
The vulnerability is addressed in OpenClaw version 2026.2.26. The fix involves both code updates and administrative actions.
2026.2.26. This enables v3 signatures and metadata pinning.security audit: device metadata upgrade requested. This event indicates that a device is attempting to change its declared platform, which may signal an active spoofing attempt.For high-security environments, administrators should consider deprecating v2 signatures entirely once the fleet is upgraded. While the patch enforces pinning even for v2 connections, disabling legacy authentication paths reduces the attack surface for future protocol downgrade attacks.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
OpenClaw OpenClaw | < 2026.2.26 | 2026.2.26 |
| Attribute | Detail |
|---|---|
| Attack Vector | Network (Authenticated) |
| Impact | Privilege Escalation / Policy Bypass |
| CVSS v3 (Est.) | 8.5 (High) |
| CWE ID | CWE-345 |
| Exploit Status | POC Available |
| Authentication | Required (Low Privilege) |
Insufficient Verification of Data Authenticity
A state persistence vulnerability exists in Tornado's CurlAsyncHTTPClient component where pooled pycurl.Curl handles are reused across asynchronous requests without a complete state reset. Consequently, sensitive per-request configurations, such as client TLS certificates or proxy basic authentication credentials, persist on the shared handle. This behavior leads to subsequent requests leaking these credentials to unauthorized remote servers.
CVE-2026-48748 is a denial-of-service vulnerability in Netty's HTTP/3 codec (netty-codec-http3) occurring when QPACK dynamic tables are enabled but the blocked streams limit is not explicitly configured. A bug in limit checking and a memory leak in stream tracking allow unauthenticated remote attackers to exhaust the JVM heap memory and crash the server.
CVE-2026-50009 is a cryptographic design vulnerability in the Netty network application framework. Prior to version 4.2.15.Final, the framework's QUIC protocol implementation fails to cryptographically segregate the generated Connection IDs and the associated Stateless Reset Tokens. An on-path network attacker who sniffs traffic during a Connection ID rotation can extract secret token material from cleartext headers, enabling them to inject spoofed reset packets and terminate active connections.
A critical hostname verification bypass vulnerability exists in the Netty network application framework when configured as a TLS client. When a developer registers a custom plain X509TrustManager, Netty wraps it inside an X509TrustManagerWrapper to adapt it to the X509ExtendedTrustManager API. However, this wrapper discards the SSLEngine context, bypassing critical hostname checks. Because the wrapper is identified as an X509ExtendedTrustManager, standard cryptographic engines and Netty's OpenSSL wrappers do not re-wrap it, failing to execute any hostname validation. Consequently, clients silently accept certificates for any host, enabling unauthenticated Man-in-the-Middle (MitM) attacks.
An uncontrolled resource pre-allocation flaw in the Netty Redis codec module allows remote unauthenticated attackers to cause a denial of service (OutOfMemoryError) by sending a crafted Redis Serialization Protocol (RESP) array header.
CVE-2026-50020 is a medium-severity HTTP Request Smuggling/Response Smuggling vulnerability (CWE-444) within the Netty asynchronous network application framework. The flaw resides in Netty's HTTP codec implementation, specifically the HttpObjectDecoder class, which silently consumes arbitrary ISO control bytes preceding the first request line.