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.
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.
MAX_DISPATCH_WRAPPER_DEPTH./usr/bin/env./bin/sh -c ... without fresh approval in allowlist + ask=on-miss.openclaw (npm)2026.2.23<= 2026.2.23>= 2026.2.2457c9a18180c8b14885bbd95474cbb17ff2d03f0bsystem.run invocation layers.SYSTEM_RUN_DENIED: approval required.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.
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.
2026.2.24Exploitability
AV:NAC:LAT:NPR:NUI:NVulnerable System
VC:NVI:LVA:NSubsequent System
SC:NSI:NSA:N6.9/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