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-VMQR-RC7X-3446

CVE-2026-28363: Remote Code Execution in OpenClaw via safeBins Validation Bypass

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 3, 2026·4 min read·33 visits

Executive Summary (TL;DR)

OpenClaw < 2026.2.23 fails to block abbreviated command-line flags. Attackers can use shortened versions of dangerous flags (like `--compress-p` for `sort`) to bypass the allowlist and achieve Remote Code Execution.

A critical security bypass in OpenClaw's `safeBins` mechanism allows authenticated users to execute arbitrary commands. The vulnerability exploits a discrepancy between OpenClaw's strict string matching validator and the GNU `getopt_long` argument parser used by underlying system binaries. By using unique abbreviations of restricted flags (e.g., `--compress-prog` instead of `--compress-program`), attackers can evade security controls.

Vulnerability Overview

OpenClaw provides a safeBins feature designed to allow the execution of specific system binaries (such as sort, grep, and jq) while restricting dangerous arguments. This feature relies on a deny-list approach, where specific flags known to facilitate arbitrary code execution or filesystem manipulation are explicitly forbidden. For example, the sort utility has the --compress-program flag blocked because it allows the execution of external binaries.

The vulnerability arises from a logic error in how these restrictions are enforced. OpenClaw's validator checks for exact string matches against the deny list. However, standard GNU utilities use getopt_long for argument parsing, which automatically expands unique abbreviations of long options. This discrepancy allows an attacker to supply an abbreviated flag that the validator does not recognize but the underlying binary accepts and executes.

Root Cause Analysis

The root cause is an Incomplete List of Disallowed Inputs (CWE-184) combined with an argument parsing inconsistency. The vulnerability exists because the application attempts to filter input without normalizing it to the canonical form expected by the consumer (the system binary).

In src/infra/exec-safe-bin-policy.ts, the validation logic iterated through user-provided arguments and compared them strictly against a deniedFlags Set. If the user provided --compress-program, the check failed (correctly). However, if the user provided --compress-prog, the check passed because that specific string was not in the deny list. The underlying sort binary, however, treats --compress-prog as an alias for --compress-program due to getopt_long behavior, creating a bypass condition.

Code Analysis

The vulnerable code relied on a direct look-up of the provided argument against a set of forbidden strings. It failed to account for the flexibility of command-line parsers.

// Vulnerable Logic (Simplified)
const deniedFlags = new Set(['--compress-program', '--output']);
 
function validate(args) {
  for (const arg of args) {
    // EXACT match check allows bypass via abbreviations
    if (deniedFlags.has(arg)) {
      throw new Error('Denied flag detected');
    }
  }
}

The fix, introduced in commit 3b8e33037ae2e12af7beb56fcf0346f1f8cbde6f, implements a canonicalization layer. Before validation occurs, the system now resolves all long options to their full names using a logic that mimics getopt_long.

// Patched Logic (Conceptual)
function validate(args) {
  for (const arg of args) {
    // 1. Canonicalize the argument (e.g., '--compress-p' -> '--compress-program')
    const canonical = resolveLongOption(arg, knownFlags);
    
    // 2. Validate the CANONICAL form
    if (deniedFlags.has(canonical)) {
      throw new Error('Denied flag detected');
    }
  }
}

This ensures that any valid abbreviation is expanded to its full form before the security check is applied. If the abbreviation is ambiguous (matches multiple flags), the patch correctly rejects the input.

Exploitation Methodology

Exploitation assumes the attacker has authenticated access to the OpenClaw API and that the tools.exec module is configured with sort as an allowed binary. The attacker sends a JSON payload to the execution endpoint, crafting the arguments to use the abbreviated flag.

  1. Target Selection: Identify the sort binary in the safeBins configuration.
  2. Payload Construction: Use --compress-prog (or any unique prefix like --compress-p) to define the external program sh. Pass the malicious command as an argument to sh.
  3. Execution: The API validates the arguments, fails to find --compress-prog in the deny list, and spawns the process.

Proof of Concept:

{
    "tool": "exec",
    "args": {
        "cmd": "sort",
        "args": [
            "--compress-prog=sh -c 'id > /tmp/pwned'",
            "-o", 
            "/dev/null",
            "/dev/null"
        ]
    }
}

Upon execution, sort interprets the flag as --compress-program and invokes sh, executing the attacker's command.

Impact Assessment

This vulnerability is rated Critical (CVSS 9.9). Successful exploitation results in Remote Code Execution (RCE) with the privileges of the OpenClaw service account.

  • Confidentiality: Attackers can read sensitive files, environment variables, and database credentials accessible to the application.
  • Integrity: Attackers can modify application code, inject backdoors, or alter data stored on the filesystem.
  • Availability: Attackers can terminate the process, delete essential files, or consume system resources (DoS).

The vulnerability is currently weaponized with public exploit scripts available, making immediate remediation essential for all exposed instances.

Remediation

The primary mitigation is to upgrade OpenClaw to version 2026.2.23 or later. This version includes the patch that canonicalizes command-line arguments before validation.

If upgrading is not immediately possible, administrators should update their safeBins configuration to temporarily remove sort and any other binaries that support getopt_long style abbreviations and have known dangerous flags. Note that simply adding --compress-prog to the deny list is insufficient, as attackers can vary the abbreviation length (e.g., --compress-pro, --compress-p). Removing the binary from the allowed list is the only safe configuration workaround.

Official Patches

OpenClawCommit 3b8e33037ae2e12af7beb56fcf0346f1f8cbde6f

Fix Analysis (1)

Technical Appendix

CVSS Score
9.9/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
EPSS Probability
0.09%
Top 75% most exploited

Affected Systems

OpenClaw

Affected Versions Detail

Product
Affected Versions
Fixed Version
OpenClaw
OpenClaw
< 2026.2.232026.2.23
AttributeDetail
CWE IDCWE-184
Attack VectorNetwork (AV:N)
CVSS Score9.9 (Critical)
EPSS Score0.00089
ImpactRemote Code Execution
Exploit StatusWeaponized

MITRE ATT&CK Mapping

T1202Indirect Command Execution
Execution
T1203Exploitation for Client Execution
Execution
CWE-184
Incomplete List of Disallowed Inputs

The software filters or validates input but relies on a list of disallowed inputs that is incomplete or can be bypassed using alternate representations.

Known Exploits & Detection

CXSecurityPublic exploit leveraging sort abbreviation bypass

Vulnerability Timeline

Fix committed by Peter Steinberger
2026-02-21
OpenClaw version 2026.2.23 released
2026-02-23
Public exploit released by Mohammed Idrees Banyamer
2026-02-27
CVE Published
2026-03-02

References & Sources

  • [1]GitHub Advisory GHSA-3c6h-g97w-fg78
  • [2]NVD CVE-2026-28363

More Reports

•9 days ago•CVE-2026-9354
6.9

CVE-2026-9354: Arbitrary Mass Mention Bypass in NousResearch hermes-agent Slack and Mattermost Adapters

A vulnerability in the Slack and Mattermost platform adapters for NousResearch hermes-agent permits an unauthenticated remote attacker to execute arbitrary mass mentions. By leveraging prompt injection, an attacker can bypass output sanitization logic and trigger workspace-wide notification exhaustion.

Alon Barad
Alon Barad
38 views•6 min read
•9 days ago•CVE-2026-9306
6.3

CVE-2026-9306: Unauthenticated Insecure Direct Object Reference (IDOR) in QuantumNous new-api Midjourney Relay

CVE-2026-9306 is a critical unauthenticated Insecure Direct Object Reference (IDOR) vulnerability located in the QuantumNous new-api application, affecting versions up to and including 0.12.1. The flaw is caused by improper middleware ordering combined with a lack of object-level authorization checks. This allows remote, unauthenticated attackers to retrieve sensitive Midjourney images belonging to other users by supplying a valid task identifier.

Amit Schendel
Amit Schendel
16 views•5 min read
•10 days ago•GHSA-GGXF-37HM-9WQF
6.5

GHSA-GGXF-37HM-9WQF: Session Leakage via Unsafe Challenge Path Parsing in instagrapi

The instagrapi library prior to version 2.6.9 contains an improper input validation vulnerability within its challenge handling mechanism. Maliciously crafted server responses can manipulate the client into forwarding session cookies and credentials to an external attacker-controlled domain.

Amit Schendel
Amit Schendel
21 views•6 min read
•10 days ago•GHSA-QQQM-5547-774X
9.1

GHSA-QQQM-5547-774X: Unauthenticated Path Traversal in FileBrowser Quantum PATCH Handler

GHSA-QQQM-5547-774X is a critical path traversal vulnerability in the FileBrowser Quantum application, specifically within the Go backend package. The vulnerability resides in the HTTP handler responsible for processing bulk file modifications via the public API. Unauthenticated attackers can exploit an order-of-operations flaw in the path sanitization logic to bypass intended directory restrictions. This allows adversaries to arbitrarily read, move, and overwrite files on the underlying filesystem by supplying specially crafted HTTP PATCH requests.

Alon Barad
Alon Barad
11 views•6 min read
•10 days ago•CVE-2026-8723
5.3

CVE-2026-8723: Synchronous Denial of Service in qs npm Package via TypeError

The qs query string parsing and serialization library for Node.js is vulnerable to a synchronous Denial of Service (DoS) attack. The vulnerability manifests as a process-terminating TypeError when processing arrays with null or undefined elements under specific configuration parameters.

Amit Schendel
Amit Schendel
38 views•7 min read
•10 days ago•GHSA-7M8F-HGJQ-8GC9
7.5

GHSA-7M8F-HGJQ-8GC9: Pre-Authentication Denial of Service via Insecure Deserialization Order in aiosend

The aiosend library prior to version 3.0.6 contains a pre-authentication Denial of Service (DoS) vulnerability in its webhook handling mechanism. The software processes and deserializes incoming JSON payloads before verifying the cryptographic signature, allowing unauthenticated attackers to exhaust server CPU and memory resources by sending large, complex payloads.

Amit Schendel
Amit Schendel
4 views•6 min read