Jun 19, 2026·5 min read·11 visits
A missing authorization check (CWE-862) in the OpenClaw 'focus' command allows authenticated low-privilege users to change the gateway's focus state, bypassing configured controlScope isolation boundaries.
An authorization bypass vulnerability in OpenClaw versions prior to 2026.4.25 allows authenticated users to execute the 'focus' command without proper controlScope validation. Because the routing engine fails to enforce configured access policies on this specific command pathway, low-privilege operators can alter the gateway's global focus state, leading to potential unauthorized cross-channel or cross-session interaction depending on downstream configuration.
OpenClaw functions as an open-source personal AI assistant gateway designed to route command executions across multiple user sessions, applications, and messaging channels. To enforce security boundaries between these disparate environments, the application implements an access control mechanism referred to as 'controlScope'. The controlScope configuration dictates which commands a given user, channel, or token can execute within the gateway's runtime environment.
A flaw exists in the command registration and routing component of OpenClaw. Specifically, the 'focus' command pathway does not perform validation against the caller's controlScope. This exposes an unauthorized execution path for any caller possessing authenticated access to the gateway interface.
While OpenClaw relies on a trusted-operator model for standard operations, this flaw allows low-privilege callers to transcend their designated scope. The exposure remains confined to environments where multiple logical boundaries share a single gateway node, and where untrusted or restricted operators can execute basic gateway commands.
The fundamental flaw resides in the lack of explicit authorization checks within the command router for the 'focus' feature, classified under CWE-862 (Missing Authorization). During initialization, the gateway registers commands alongside their required access parameters. However, the registration parameters for 'focus' omitted the validation hook that checks the caller's active context against the target scope.
When a command is issued, the routing logic processes the payload and maps it to the registered execution callback. If the command implementation lacks an explicit declaration to verify the incoming scope, the routing engine executes the state transition unconditionally. The 'focus' command is designed to update state parameters such as active windows, current database schemas, or active user contexts.
Consequently, an authenticated user restricted to a low-trust context can issue a 'focus' command that alters the active state of a high-trust context. The router validates that the user is authenticated, but it fails to confirm whether the user is authorized to perform state modifications on the specified target, allowing unauthorized cross-scope state manipulation.
The following flowchart illustrates the difference between secure command execution pathways and the insecure 'focus' command execution pathway that led to CVE-2026-53850.
This workflow demonstrates that while standard restricted commands must clear the validation gate, the 'focus' execution path bypasses the access-control filter entirely, leading directly to state modification.
An examination of the command registration and execution layers in vulnerable versions reveals how the verification step was bypassed. Below is an illustrative representation of the vulnerable routing logic compared with the corrected implementation.
// In vulnerable versions, command declarations did not enforce controlScope restrictions systematically
router.register('focus', async (context, args) => {
// VULNERABILITY: No check is performed to see if context.user.scope satisfies args.targetScope
state.setFocus(args.target);
return { status: 'success', currentFocus: args.target };
});// In version 2026.4.25, the registration explicitly validates the caller context
router.register('focus', async (context, args) => {
// FIX: Validate the caller's controlScope against the target system resource
if (!context.controlScope.canAccess(args.target)) {
throw new AuthorizationError('Inadequate privilege level for the specified target');
}
state.setFocus(args.target);
return { status: 'success', currentFocus: args.target };
});By adding explicit verification against the target parameter, the gateway prevents unauthorized actors from targeting assets outside their administrative domain. This mitigation completely resolves the bypass, provided that the authorization helper is applied to all active commands.
To exploit this vulnerability, an attacker must first obtain a valid channel or session key allowing command input to the gateway. The exploit does not require administrator privileges, only standard operator access. Once authenticated, the attacker submits a structured command containing the target parameter they wish to manipulate.
The attacker assesses the active workspace to identify administrative targets. This is accomplished by reviewing accessible public directories or metadata exposed within the standard user interface.
The attacker sends the command payload targeting a restricted context. An example command sequence is structured as follows:
{
"command": "focus",
"arguments": {
"target": "admin-session-04",
"workspace": "restricted-management-zone"
}
}The routing engine processes the instruction. Since no controlScope checks are enforced, the engine shifts the gateway's global active focus parameter to admin-session-04. Subsequent automated actions, context queries, or assistant logs are directed to or evaluated against this administrative channel, leaking information or executing subsequent commands in the context of the hijacked session.
The primary impact of CVE-2026-53850 is a loss of integrity. The CVSS v3.1 score is calculated as 5.5 (Medium), with a vector of CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N. Because the focus state dictates where subsequent instructions or queries are targeted, manipulating this parameter allows a low-privilege operator to redirect processing workflows into high-privilege zones.
The vulnerability does not directly expose variables or system files (Confidentiality: None), nor does it crash the gateway process (Availability: None). However, the alteration of execution scope can be chained with other processing tools to execute unauthorized operations. If the assistant gateway is configured with sensitive downstream plugins (such as local file execution or database write privileges), altering the focus state can cause the assistant to process malicious inputs inside a privileged zone.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
openclaw OpenClaw | < 2026.4.25 | 2026.4.25 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-862 (Missing Authorization) |
| Attack Vector | Local (AV:L) |
| CVSS v3.1 Base Score | 5.5 |
| CVSS v4.0 Base Score | 6.8 |
| EPSS Score | 0.00093 (0.71st percentile) |
| Impact Class | Integrity (High) |
| Exploit Status | No public functional exploit or proof-of-concept exists |
| CISA KEV Status | Not listed |
The acquisition or verification of permissions is not performed on an active execution path, enabling an actor to access resources or modify state without matching authorization privileges.
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.