Jun 19, 2026·8 min read·27 visits
An authorization bypass in OpenClaw allows authenticated operators to retain elevated privileges during device re-pairing by submitting an empty scope array, skipping containment guards.
OpenClaw versions prior to 2026.4.25 are subject to a scope containment bypass vulnerability in the device re-pairing component. When processing re-pairing requests, the application backend fails securely, allowing authenticated operators to bypass authorization containment policies. By submitting a re-pairing payload with an empty or omitted scope array, an operator can skip containment checks and retain broader, previously established administrative privileges. This vulnerability is classified under CWE-636: Not Failing Securely ('Failing Open').
OpenClaw is an open-source platform designed to facilitate connection management, authorization, and message routing for client devices within a Node.js runtime environment. Within this architecture, device sessions are governed by distinct authorization scopes that enforce the principle of least privilege. Under normal operating conditions, client devices authenticate and obtain a specific set of active scopes, which are then validated against backend access control lists during subsequent API requests. This containment strategy limits the lateral capability of individual devices on the network.
During lifecycle operations, client devices frequently undergo a process known as re-pairing. Re-pairing is used to rotate cryptographic key material, update connection parameters, or renegotiate active session scopes. The design of OpenClaw permits a client to request a subset of its allowed scopes to dynamically reduce its exposure during specific operations. This subset negotiation is handled by dedicated authorization guards that evaluate incoming requests to ensure they do not exceed the scope boundary established during initial device provisioning.
CVE-2026-53852 describes a scope containment bypass vulnerability residing in the device re-pairing routine of OpenClaw. The flaw is classified under CWE-636: Not Failing Securely ('Failing Open'). When an authenticated operator submits a re-pairing request containing an empty or falsy scope parameter, the system's authorization guard fails open. Instead of restricting the session to an empty set of permissions, the validation logic is bypassed entirely, allowing the caller to retain or restore a broader set of administrative permissions than intended. This exposes the application to unauthorized actions from otherwise restricted device sessions.
The technical root cause of CVE-2026-53852 lies within the conditional validation logic of the pairing module, specifically when parsing the requestedScopes array. In secure systems, input validation must verify that requested access privileges are a strict subset of the user's allocated permissions. If the input is empty or omitted, the default safe state must be to grant zero active scopes, thus failing closed. The vulnerability arises because OpenClaw's implementation treats an empty array ([]) or a null value as an indication that no modification to the active session scopes is required, skipping the containment check entirely.
When a device issues a re-pairing request, the application backend processes the request via an authorization handler. The handler evaluates whether the client-supplied requestedScopes contains values. The check is implemented using a conditional statement that only initiates the validation and scope-updating routine if the array exists and has a length greater than zero. If the array is empty, control flows directly to the completion routine without executing the subset constraint logic or modifying the active scope array.
This behavior allows the session to preserve its pre-existing, higher-privileged authorization state. Because the system does not overwrite the active session scopes with the requested empty list, the containment mechanism is effectively bypassed. The failure to handle empty inputs securely violates the principle of complete mediation, wherein every access request must be checked for authority. This logic error allows lower-privileged, contained operators to escape their restriction boundaries.
The vulnerability is illustrated by analyzing the logical flow within the pairing verification component. The vulnerable code pattern fails to handle empty inputs securely, relying on an improper existence check that permits the bypass of downstream assignments. Under this implementation, the backend does not enforce the restricted scope set when the payload's scopes property is empty.
// Vulnerable Code Pattern
export async function processRepairingRequest(device, requestedScopes: string[]) {
// Bypassing guard: If requestedScopes is empty, the check is skipped entirely
if (requestedScopes && requestedScopes.length > 0) {
for (const scope of requestedScopes) {
if (!device.allowedScopes.includes(scope)) {
throw new Error(`Unauthorized scope: ${scope}`);
}
}
device.activeScopes = requestedScopes;
} else {
// FAIL OPEN: An empty scope set skips the restriction guard
logger.warn("Re-pairing request received with empty scope set. Retaining previous active scopes.");
}
await device.save();
return { status: "success", scopes: device.activeScopes };
}The patched implementation resolves the vulnerability by removing the conditional bypass and standardizing the incoming array. If the requestedScopes parameter is null or undefined, the system defaults to an empty array. The containment guard then iterates over this array, ensuring that any elements present are validated. Crucially, the assignment device.activeScopes = scopesToAuthorize is executed unconditionally, forcing the session to accept the empty set if no valid scopes are provided.
// Repaired Code Pattern
export async function processRepairingRequest(device, requestedScopes: string[]) {
// Standardize the input array: default to an empty list rather than skipping
const scopesToAuthorize = requestedScopes || [];
// Containment guard: always validates every scope requested
for (const scope of scopesToAuthorize) {
if (!device.allowedScopes.includes(scope)) {
throw new Error(`Scope containment violation: ${scope} is not allowed.`);
}
}
// Assign the exact restricted subset (even if empty)
device.activeScopes = scopesToAuthorize;
await device.save();
return { status: "success", scopes: device.activeScopes };
}While this fix is effective against the specific vector of empty arrays, overall security remains dependent on strict type-checking at the API gateway layer. If the API parser allows non-array objects or nested structures to reach this logic, further bypass variants might arise. To achieve complete remediation, input schemas must enforce strict validation of the requestedScopes field, rejecting payloads that deviate from a flat array of strings.
Exploitation of CVE-2026-53852 requires the attacker to possess authenticated operator credentials with at least low-privilege access to the target OpenClaw deployment. The attacker must also have access to an active session associated with a specific device identifier. The objective of the attack is to bypass containment restrictions and retain or elevate the active privileges associated with the device session.
The attack begins with the interception or construction of a legitimate device re-pairing request. Typically, these requests are transmitted via HTTP POST to the pairing endpoints, such as /api/device/repair or /api/v1/auth/repairing. A normal request specifies a list of reduced scopes in the payload. To execute the bypass, the attacker modifies this payload, substituting the requested scopes array with an empty array [] or a null value.
Upon receiving the malformed JSON payload, the vulnerable backend executes the processRepairingRequest routine. Because the requestedScopes array contains zero elements, the application bypasses the scope update logic entirely. The database session remains configured with the broader, pre-existing administrative scopes. The attacker can then issue requests to high-privilege endpoints, executing administrative actions that should have been restricted by the re-pairing containment policy. This permits full lateral movement within the compromised scope boundaries.
The security impact of CVE-2026-53852 is characterized by the loss of session isolation and the failure of privilege containment mechanisms. Although the National Vulnerability Database assigns a CVSS v3.1 score of 5.4 (Medium), and the CNA assigns a CVSS v4.0 score of 2.3 (Low), the flaw represents a fundamental breakdown of the system's access control architecture. In multi-tenant or multi-tier deployments, the ability to bypass scope restrictions undermines the trust boundaries established between low-privilege operators and high-privilege control resources.
The difference between the CVSS v3.1 and v4.0 ratings lies in the evaluation of environmental requirements and attack attributes. The CVSS v4.0 vector introduces the "Attack Requirements" metric, set to Present (AT:P). This reflects the dependency on a pre-existing configuration state: the target system must have previously granted broader scopes to the session for the bypass to yield elevated access. If the session never possessed high-privilege scopes, submitting an empty array will not escalate permissions.
As of the current assessment, there is no evidence of active exploitation in the wild, and the EPSS score remains low at 0.00164, representing a 0.164% probability of exploitation within 30 days. Despite the low public exploit maturity, organizations deploying OpenClaw in production environments must treat this vulnerability as significant, particularly if their operations rely on device-level scope confinement to isolate untrusted or external networks.
Remediation of CVE-2026-53852 requires upgrading all affected OpenClaw deployments to version 2026.4.25 or higher. This release contains the updated pairing logic that ensures empty scope requests default to a closed state, effectively removing the bypass vector. Administrators must verify that the deployment successfully transitions to the patched codebase and that no beta-level versions before 2026.4.25 remain active.
If immediate upgrading is not feasible, temporary mitigation can be achieved through the implementation of Web Application Firewall (WAF) rules or API gateway policies. These rules must inspect incoming traffic to the /api/device/repair and /api/v1/auth/repairing endpoints. Any request containing an empty array or missing parameter for the scopes field must be blocked or rejected with an HTTP 400 Bad Request response before the request is processed by the application layer.
In addition to input filtering, security teams must audit application logs for historical pairing requests. Search queries should target payloads where the scopes parameter is empty or null, followed by requests to administrative endpoints from the same session. This forensic analysis is critical for identifying potential past exploitation attempts and assessing whether unauthorized actions were executed prior to the application of the patch. Proper schema validation schemas, such as Joi or Zod, should be integrated into the route handler to enforce non-empty arrays where appropriate.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
OpenClaw OpenClaw | < 2026.4.25 | 2026.4.25 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-636 |
| Attack Vector | Network |
| CVSS v3.1 Score | 5.4 (Medium) |
| CVSS v4.0 Score | 2.3 (Low) |
| EPSS Score | 0.00164 (0.164% probability) |
| Exploit Status | None (No public PoC) |
| CISA KEV Status | Not Listed |
The system 'fails open' when validation is skipped or defaults to a high-privilege configuration upon receiving empty or unexpected input.
CVE-2026-58263 is a high-severity Mutation Cross-Site Scripting (mXSS) vulnerability affecting Jodit Editor prior to version 4.12.28. The flaw exists in Jodit's built-in clean-html sanitizer plugin, which fails to securely parse and sanitize nested elements containing foreign namespaces like MathML and SVG. Attackers can bypass sanitization by smuggling malicious payload elements inside rawtext container tags like style inside a MathML node, leading to DOM mutation and unauthenticated arbitrary script execution in the context of the user's browser session.
Jodit Editor versions prior to 4.13.6 are vulnerable to client-side Cross-Site Scripting (XSS). The clean-html plugin's sanitization routine performs case-sensitive lookups against uppercase-only element blacklists. When processing XML-based foreign namespaces such as SVG or MathML, DOM engines preserve the lowercase format of tags. Because Jodit's denyTags check fails to normalize tag casing, malicious script blocks nested inside foreign namespace elements completely bypass validation and serialize directly into the editor output.
A critical code injection vulnerability exists in Savon, a widely used SOAP client library for Ruby, prior to version 2.17.2. The vulnerability resides within the Savon::Model.all_operations module, where operation names fetched from a target Web Services Description Language (WSDL) document are dynamically evaluated via module_eval without sanitization. An attacker capable of manipulating the target WSDL document (e.g., through Man-in-the-Middle attacks, DNS hijacking, or Server-Side Request Forgery) can execute arbitrary Ruby code in the context of the parent application process.
An integer conversion overflow vulnerability exists in the XCF decoder of ImageMagick before version 6.9.13-51 and 7.1.2-26. The issue arises from mixed-type arithmetic that promotes calculation results to floating-point representations, causing an undefined cast back to integer. Under optimizing compilers, this undefined behavior results in bounds checks being bypassed, allowing out-of-bounds heap reads.
An authenticated file upload validation bypass vulnerability exists in the REDAXO CMS Mediapool addon in versions 5.18.2 through 5.21.0. Under permissive web server configurations, this allows authenticated users with media upload privileges to achieve remote code execution via multi-segment extension file uploads.
A critical SQL injection vulnerability exists in the @nocobase/plugin-notification-in-app-message plugin of NocoBase prior to version 2.0.61. The flaw is caused by direct string interpolation of user-controlled input into a Sequelize.literal() query, allowing authenticated users to execute stacked PostgreSQL queries and achieve remote code execution on the underlying database server.