GHSA-ccg8-46r6-9qgj

Suggest an improvement
Source
https://github.com/advisories/GHSA-ccg8-46r6-9qgj
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/03/GHSA-ccg8-46r6-9qgj/GHSA-ccg8-46r6-9qgj.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-ccg8-46r6-9qgj
Aliases
Downstream
Published
2026-03-03T19:16:48Z
Modified
2026-03-30T14:05:42Z
Severity
  • 8.8 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H CVSS Calculator
  • 6.9 (Medium) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N CVSS Calculator
Summary
OpenClaw's dispatch-wrapper depth-cap mismatch can bypass shell-wrapper approval gating in system.run allowlist mode
Details

Summary

A wrapper-depth parsing mismatch in system.run allowed nested transparent dispatch wrappers (for example repeated /usr/bin/env) to suppress shell-wrapper detection while still matching allowlist resolution. In security=allowlist + ask=on-miss, this could bypass the expected approval prompt for shell execution.

Severity / Trust Model

OpenClaw’s documented model treats authenticated gateway callers as trusted operators and exec approvals as operator guardrails. This issue is still a real approval-boundary bypass and is triaged as Medium in that model.

Technical Details

  • Dispatch-wrapper unwrapping stopped at MAX_DISPATCH_WRAPPER_DEPTH.
  • Shell-wrapper extraction could return non-wrapper once depth was exhausted.
  • Allowlist resolution could still succeed on partially unwrapped argv beginning with /usr/bin/env.
  • Result: nested wrapper chains could execute /bin/sh -c ... without fresh approval in allowlist + ask=on-miss.

Affected Packages / Versions

  • Package: openclaw (npm)
  • Latest published version at triage time: 2026.2.23
  • Vulnerable versions: <= 2026.2.23
  • Patched versions (planned next release): >= 2026.2.24

Fix Commit(s)

  • 57c9a18180c8b14885bbd95474cbb17ff2d03f0b

Verification

  • Added regression coverage for depth-overflow wrapper chains at resolution and system.run invocation layers.
  • Reproduced previous PoC behavior before fix, then confirmed denial after fix with SYSTEM_RUN_DENIED: approval required.

Release Process Note

patched_versions is pre-set to the planned next release (2026.2.24) so once npm publish is complete, advisory publication can proceed without additional version edits.

OpenClaw thanks @tdjackey for reporting.

Publication Update (2026-02-25)

openclaw@2026.2.24 is published on npm and contains the fix commit(s) listed above. This advisory now marks >= 2026.2.24 as patched.

Database specific
{
    "cwe_ids":  [
        "CWE-284",
        "CWE-863"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-03-03T19:16:48Z",
    "nvd_published_at":  "2026-03-19T22:16:36Z",
    "severity":  "MODERATE"
}
References

Affected packages

npm / openclaw

Package

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
2026.2.24

Database specific

last_known_affected_version_range
"<= 2026.2.23"
source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/03/GHSA-ccg8-46r6-9qgj/GHSA-ccg8-46r6-9qgj.json"