CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-Q2QC-744P-66R2

GHSA-Q2QC-744P-66R2: OpenClaw session_status Sandbox Bypass via sessionId Resolution

Alon Barad
Alon Barad
Software Engineer

Mar 29, 2026·5 min read·21 visits

Executive Summary (TL;DR)

OpenClaw versions 2026.3.11 through 2026.3.24 fail to properly apply visibility guards when resolving `sessionId` aliases in the `session_status` tool, leading to sandbox escapes and unauthorized metadata disclosure.

The OpenClaw AI personal assistant framework contains an authorization bypass in the `session_status` tool. A logic flaw in input resolution allows sandboxed subagents to query the status of parent or sibling sessions, circumventing intended visibility restrictions.

Vulnerability Overview

OpenClaw provides an AI personal assistant framework featuring a sandboxed mode. This mode restricts specific agents to their designated session tree. The session_status tool operates within this ecosystem, allowing agents to query the operational state of active sessions.

A vulnerability exists within this tool that compromises the isolation guarantees of the sandbox. The flaw is classified as Improper Authorization (CWE-285) and Insecure Direct Object Reference (CWE-639). It permits a sandboxed subagent to access metadata belonging to parent or sibling sessions.

The core issue stems from an incorrect order of operations during input processing. The session_status tool resolves short session aliases into canonical keys before evaluating security boundaries. This specific sequence leads to a complete bypass of the visibility guard.

Root Cause Analysis

The session_status tool accepts a sessionKey parameter to specify the target session. This parameter can be provided as a canonical key (starting with agent:) or a shorter sessionId alias. The system normalizes the input by resolving the alias to its canonical form via the sessions.resolve function.

The visibility guard determines if the requested session falls within the authorized session tree of the querying agent. The logic relies on checking if the input string begins with agent: to decide whether to execute the security check.

The flaw occurs because the resolution step mutates the requestedKeyRaw variable to the canonical agent: format before the guard condition is evaluated. Consequently, the visibility guard checks the mutated string instead of the original input. Because the string was already converted, the condition !requestedKeyRaw.startsWith("agent:") evaluates to false. The security check is skipped entirely for any input that originated as a short alias.

Code Analysis

The vulnerable implementation modifies the input variable before the security check occurs. This architectural mistake allows aliases to bypass the authorization requirements.

// Vulnerable Implementation
// Resolution block rewrites requestedKeyRaw to an explicit "agent:..." key
if (resolved && !requestedKeyRaw.startsWith("agent:")) {
    requestedKeyRaw = resolved.key;
}
 
// Flawed guard check: requestedKeyRaw now starts with "agent:", so check is skipped
if (visibilityGuard && !requestedKeyRaw.startsWith("agent:")) {
    visibilityGuard.check(normalizeVisibilityTargetSessionKey(resolved.key, agentId));
}

The patch introduced in commit d9810811b6c3c9266d7580f00574e5e02f7663de introduces a boolean flag named isExplicitAgentKey. This flag stores the original state of the input before any mutation takes place.

// Patched Implementation
const isExplicitAgentKey = requestedKeyRaw.startsWith("agent:");
 
// Resolution uses the pre-resolution flag
if (resolved && !isExplicitAgentKey) {
    requestedKeyRaw = resolved.key;
}
 
// Correct guard check using the pre-resolution flag
if (visibilityGuard && !isExplicitAgentKey) {
    const access = visibilityGuard.check(
      normalizeVisibilityTargetSessionKey(resolved.key, agentId),
    );
    // ... handle access
}

This fix ensures the guard logic evaluates the original input type rather than the post-resolution string. The implementation fully resolves the logic flow error, preventing alias-based inputs from bypassing the visibility check.

Exploitation Methodology

An attacker controlling a sandboxed subagent must first identify or guess a valid sessionId outside their authorized tree. The sessionId format typically follows a predictable string structure. This predictability reduces the complexity of acquiring a valid target alias.

The attacker invokes the session_status tool using the target sessionId alias instead of the canonical agent: key. The system accepts the alias and resolves it internally. The mutated string causes the application to bypass the visibility guard logic.

The tool subsequently returns the status metadata for the unauthorized session. The official OpenClaw test suite includes a proof-of-concept demonstrating this execution path. The exploit requires no special network position, only standard access to the sandboxed agent environment.

// PoC execution triggering the bypass
const tool = getSessionStatusTool("agent:main:subagent:child", {
  sandboxed: true,
});
 
// Providing the alias 's-parent' bypasses the guard
await tool.execute("call7-parent-session-id", {
  sessionKey: "s-parent",
});

Impact Assessment

Successful exploitation results in unauthorized read access to session metadata. The attacker successfully breaches the logical isolation provided by the OpenClaw sandbox.

The exposed metadata pertains to parent or sibling sessions that operate outside the restricted environment. While the vulnerability does not directly grant arbitrary code execution, it exposes internal state information. This disclosure aids an attacker in mapping the broader OpenClaw architecture and session hierarchy.

The confidentiality impact is constrained to session status metadata. The integrity and availability of the system remain unaffected. The vulnerability requires existing access to a sandboxed agent, limiting the initial attack vector to authenticated or internally provisioned contexts.

Remediation and Mitigation

The vulnerability is addressed in OpenClaw version 2026.3.25 and fully resolved in version 2026.3.26. Organizations must upgrade the openclaw npm package to version 2026.3.26 or later to ensure complete remediation.

If immediate patching is unfeasible, administrators can apply a configuration workaround. The session_status tool can be explicitly disabled for sandboxed agents. This is achieved by modifying the agents.list[].tools array in the environment configuration to omit the vulnerable tool.

Detection engineering efforts should monitor tool execution traces. Defenders should alert on session_status tool invocations where the sessionKey parameter utilizes a short alias format instead of the standard canonical structure.

Official Patches

GitHub AdvisoryGlobal GitHub Security Advisory
OpenClaw RepositoryRepository level security advisory

Fix Analysis (1)

Technical Appendix

CVSS Score
6.5/ 10
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N

Affected Systems

OpenClaw FrameworkOpenClaw `session_status` tool

Affected Versions Detail

Product
Affected Versions
Fixed Version
openclaw
openclaw
>= 2026.3.11, <= 2026.3.242026.3.25
AttributeDetail
CWE IDCWE-285, CWE-639
Attack VectorLocal / Sandboxed Environment
ImpactUnauthorized Information Disclosure
Exploit StatusProof of Concept Available
CVSS Score6.5
Fix Commitd9810811b6c3c9266d7580f00574e5e02f7663de

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
T1082System Information Discovery
Discovery
CWE-285
Improper Authorization

Improper Authorization logic allows circumvention of intended access restrictions.

Known Exploits & Detection

Test Suite PoCProof of concept code included in the repository test suite demonstrating sandbox bypass.

Vulnerability Timeline

Related bug report (Issue #42692) filed regarding Unknown sessionId.
2026-03-11
Security fix committed to repository.
2026-03-26
Advisory GHSA-q2qc-744p-66r2 published.
2026-03-26
Patched version 2026.3.26 released.
2026-03-26

References & Sources

  • [1]GitHub Advisory GHSA-Q2QC-744P-66R2
  • [2]Repository Security Advisory
  • [3]Fix Commit d9810811b6c3c9266d7580f00574e5e02f7663de
  • [4]GitHub Issue #42692: Unknown sessionId

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 7 hours ago•CVE-2026-48861
2.1

CVE-2026-48861: HTTP Request Splitting and Smuggling via Method Parameter CRLF Injection in Elixir Mint

CVE-2026-48861 is a client-side HTTP request-line CRLF (Carriage Return Line Feed) injection vulnerability in the popular Elixir HTTP client library, Mint. The vulnerability permits HTTP Request Splitting and HTTP Request Smuggling when an application forwards untrusted, attacker-controlled inputs to Mint's HTTP client requests as either the HTTP request method or target. By embedding CRLF characters within these parameters, an attacker can terminate the request line prematurely, inject malicious headers, or pipeline entirely independent requests. These smuggled requests are then processed by upstream or downstream proxy servers as separate HTTP queries on the same TCP connection. While Mint version 1.7.0 introduced target validation to secure the request target, the HTTP request method parameter remained completely unvalidated. This flaw allows attackers to bypass routing filters, access restricted internal APIs, or poison HTTP caches under default configurations.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 7 hours ago•CVE-2026-49753
6.3

CVE-2026-49753: HTTP Request/Response Smuggling via Inconsistent Content-Length Parsing in Elixir Mint Client

An Inconsistent Interpretation of HTTP Requests (HTTP Request/Response Smuggling) vulnerability in the Elixir Mint HTTP client allows attacker-controlled HTTP/1 servers to desynchronize response framing on shared connections due to over-lenient parsing of sign-prefixed Content-Length headers.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 8 hours ago•CVE-2026-49754
8.2

CVE-2026-49754: Denial of Service via Unbounded HTTP/2 CONTINUATION Frame Accumulation in Elixir Mint

An allocation of resources without limits or throttling vulnerability in Elixir Mint allows an attacker-controlled HTTP/2 server to exhaust memory in a Mint client. The vulnerability is exploited by sending a HEADERS frame without the END_HEADERS flag followed by an infinite stream of CONTINUATION frames. Because the client lacks limits on the incoming header-block accumulator, the client continuously consumes memory until an out-of-memory crash occurs.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 8 hours ago•CVE-2026-48596
2.1

CVE-2026-48596: Improper Neutralization of CRLF Sequences in Elixir Tesla Multipart HTTP Client

CVE-2026-48596 is an Improper Neutralization of CRLF Sequences in HTTP Headers (HTTP Request/Response Splitting, CWE-113) in the Elixir Tesla HTTP client. The flaw resides in how multipart content-type parameters are joined and serialized, enabling attackers to inject arbitrary headers or split HTTP requests when applications pass untrusted inputs to the parameters of multipart uploads.

Alon Barad
Alon Barad
5 views•6 min read
•about 9 hours ago•CVE-2026-48594
8.2

CVE-2026-48594: Decompression Bomb Denial of Service in Elixir Tesla HTTP Client

An improper handling of highly compressed data (decompression bomb) vulnerability exists in the Elixir Tesla HTTP client when utilizing response decompression middlewares. By serving highly compressed responses or stacked content-encoding headers, a malicious server can cause arbitrary heap exhaustion, leading to a denial of service (DoS) crash in the BEAM virtual machine.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 9 hours ago•CVE-2026-48595
8.2

CVE-2026-48595: Cross-Origin Credential Leakage in Elixir Tesla Client via Case-Sensitive Redirect Filter Bypass

A high-severity security vulnerability in Elixir's Tesla HTTP client library (CVE-2026-48595) allows unauthenticated remote attackers to harvest sensitive credentials, including Authorization headers and cookies. The flaw resides in the 'Tesla.Middleware.FollowRedirects' component, which performs case-sensitive lookups when stripping credentials during cross-origin redirects. Because HTTP headers are case-insensitive by RFC specifications, standard canonical casing (e.g., 'Authorization') bypasses the lowercase-only blocklist, leaking tokens to untrusted external redirect destinations.

Alon Barad
Alon Barad
6 views•5 min read