Jun 19, 2026·5 min read·21 visits
OpenClaw versions before 2026.4.29 fail to enforce authorization checks (SessionVisibilityGuard) on its shared memory search API endpoint. This omission allows any low-privileged authenticated user to query and retrieve private memory and configuration logs from other active or historic sessions.
A missing authorization vulnerability (CWE-862) exists within the shared memory search interface (memory-wiki) of OpenClaw prior to version 2026.4.29. The application fails to apply visibility controls to search queries targeting `/api/memory-wiki/search`. Consequently, an authenticated attacker with low-level privileges can query the global index and exfiltrate sensitive memory entries belonging to other active or historical sessions without authorization.
The Node.js-based application OpenClaw provides a shared memory feature known as memory-wiki. This module allows users to catalog, document, and store session states, configuration templates, and transaction metadata. To prevent cross-tenant data leakage and preserve session boundaries, OpenClaw implements logic to restrict memory access to authorized sessions and their associated owners.
However, the global search mechanism exposed by the memory-wiki API contains an authorization bypass. Although individual fetch actions require rigorous session-matching credentials, the query parser exposed via the search interface does not enforce these boundaries. As a result, the search capability presents an expanded attack surface that exposes indexing keys across all user sessions.
An authenticated attacker with low-privileged access can use the shared search query path to view structured memory records belonging to other sessions. Because these memory structures often store sensitive state data, session-specific access tokens, or environment parameters, unauthorized read access to this repository compromises overall system confidentiality.
The root cause of CVE-2026-53844 is the missing application of authorization controls (specifically the SessionVisibilityGuard middleware) on the search endpoint router. In OpenClaw's design, individual elements retrieved from the shared memory database are protected. However, the router pattern for the global search endpoint accepts and parses query parameters without validating whether the caller's session has permission to access the matching objects.
The search controller interacts directly with the database query engine. If the search query parameters (such as q=* or empty inputs) are supplied by the caller, the system evaluates the query globally. It retrieves all matched index items from the storage engine and returns them directly to the client.
This flaw represents an instance of CWE-862 (Missing Authorization). The system performs authentication via standard session tokens or JSON Web Tokens (JWT) at the router level, but fails to check visibility authorization for individual search records returned. The code lack an intermediate security boundary that ensures search results are filtered to match the executing user's session identifier.
The routing structure prior to version 2026.4.29 defined the /api/memory-wiki/search endpoint using only authentication middleware. Below is an abstract representation of the vulnerable routing code in the routes/memoryWiki.js module:
// VULNERABLE: routes/memoryWiki.js
const express = require('express');
const router = express.Router();
const { searchMemoryWiki } = require('../controllers/memoryWikiController');
const { authenticateUser } = require('../middleware/auth');
// The router fails to include the SessionVisibilityGuard middleware
router.get('/search', authenticateUser, searchMemoryWiki);In the patched version, the development team updated the router definition to enforce validation before invoking the controller. The SessionVisibilityGuard was introduced into the middleware pipeline, forcing the application to filter the query scope or validate the target scope parameter against the user's current session permissions:
// PATCHED: routes/memoryWiki.js
const express = require('express');
const router = express.Router();
const { searchMemoryWiki } = require('../controllers/memoryWikiController');
const { authenticateUser } = require('../middleware/auth');
const { SessionVisibilityGuard } = require('../middleware/visibilityGuard');
// The patch adds the SessionVisibilityGuard middleware to enforce access controls
router.get('/search', authenticateUser, SessionVisibilityGuard, searchMemoryWiki);While this fix is complete for standard routes, security teams must ensure that custom query parameters or supplementary API endpoints referencing the memory-wiki database index also pass through the SessionVisibilityGuard to prevent similar bypass vectors.
To exploit CVE-2026-53844, an attacker requires network access to the target instance and valid, low-privileged credentials. Once authenticated, the attacker initiates a GET request against the /api/memory-wiki/search endpoint.
By supplying wildcards or null query parameters, the attacker forces the system to execute an unrestricted search query. The lack of validation on the backend allows the query parser to retrieve records regardless of their owner or session constraints.
GET /api/memory-wiki/search?q=* HTTP/1.1
Host: target-openclaw-app:port
Authorization: Bearer <attacker_session_token>
Accept: application/jsonThe server processes the request, matches the wildcard against the memory keys of all active sessions, and responds with an HTTP 200 OK. The JSON payload contains the full text of search entries, exposing data from separate, independent sessions.
The impact of this vulnerability is limited to the confidentiality of records stored within OpenClaw's shared memory architecture. An attacker cannot modify, append, or delete records via this route, resulting in an integrity score of None (I:N) and an availability score of None (A:N).
However, because the memory-wiki feature is utilized for cataloging system states and logging active values, the confidentiality impact is high (C:H). Compromising this repository allows attackers to harvest session IDs, tokens, internal structure configurations, or system logs. This can facilitate subsequent attacks, including credential reuse or session hijacking.
The vulnerability is particularly significant in multi-tenant environments where distinct organizations or business units operate on the same OpenClaw instance under the assumption that their session data remains isolated.
The primary remediation strategy is upgrading the OpenClaw installation to version 2026.4.29 or later. This upgrade modifies the route handler to systematically enforce visibility controls.
In scenarios where immediate patching is not possible, security administrators should deploy Web Application Firewall (WAF) rules to inspect and filter queries targeting the shared search path. Alternatively, access to the search path can be disabled completely by commenting out or removing the route definition within the application source code.
To identify historical exploitation attempts, security operations teams should analyze web server access logs for requests directed to /api/memory-wiki/search that contain wildcard queries or lack specific session parameters.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
OpenClaw OpenClaw | < 2026.4.29 | 2026.4.29 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-862: Missing Authorization |
| Attack Vector | Network |
| CVSS v3.1 Score | 6.5 (Medium) |
| CVSS v4.0 Score | 6.0 (Medium) |
| EPSS Score | 0.0021 |
| Impact | High Confidentiality Loss |
| Exploit Status | No public proof-of-concept exists |
| CISA KEV Status | Not listed |
The system does not perform an authorization check when an actor attempts to access a resource or perform an action.
CVE-2026-61591 is a high-severity state injection and authorization bypass vulnerability affecting the djust framework's opt-in State Snapshot feature. Prior to version 1.0.7, the framework restored public view state snapshots returned from the client browser during back-navigation without validating their cryptographic authenticity or integrity. This flaw allows malicious clients to manipulate serialized JSON payloads to inject unauthorized properties, leading to mass assignment (CWE-915) and privilege escalation. Version 1.0.7 addresses this issue by introducing HMAC cryptographic signatures bound to both the view configuration and the user's session identifier.
A critical connection reuse vulnerability exists in curl and libcurl between versions 7.64.1 and 8.21.0 inclusive when Negotiate authentication (SPNEGO) is configured with blank credentials. Because libcurl fails to track changes to the underlying operating system's ambient security context, persistent authenticated connections are incorrectly matched and shared between distinct user sessions, allowing subsequent users to execute requests with the authorization state of the prior user.
A sensitive data exposure vulnerability exists in the djust framework before version 1.0.7. When serializing Django models to public view attributes, the framework fails to filter out sensitive fields such as passwords, privilege flags, and private tokens, leading to over-serialization and exposure of sensitive records to the client browser.
A broken object-level access control (IDOR) vulnerability exists in the djust Django framework prior to version 1.0.7. The framework's per-object authorization hooks were enforced correctly over WebSockets but entirely bypassed on synchronous HTTP GET rendering, SPA client-side navigation, and embedded sub-views, allowing authenticated attackers to view arbitrary unauthorized database records.
CVE-2026-61589 is a security-bypass and information-disclosure vulnerability in the djust library prior to version 1.0.7. The library's WebSocket live path component fails to propagate the client HTTP Host header when dynamically reconstructing Django HttpRequest objects. Consequently, multi-tenant Django applications that rely on Host-based resolution may fail to isolate data correctly under certain configurations, leading to unauthorized cross-tenant data access.
A critical unauthenticated arbitrary module import vulnerability in the djust framework before version 1.0.7 allows remote attackers to execute arbitrary code by exploiting unsafe Python reflection during LiveView connection mounting.