OpenClaw has macOS `system.run` allowlist bypass via quoted command substitution
Summary
In OpenClaw's macOS node-host path, system.run allowlist parsing in security=allowlist mode failed to reject command substitution tokens when they appeared inside double-quoted shell text.
Because of that gap, payloads like echo "ok $(id)" could be treated as allowlist hits (first executable token echo) while still executing non-allowlisted subcommands through shell substitution.
Affected Packages / Versions
- Package: npm
openclaw - Latest published affected version:
2026.2.21-2 - Affected range:
<= 2026.2.21-2 - Patched version (planned next release):
2026.2.22
Notes:
- Default installs are not affected (
security=denyby default). - The issue requires opting into
security=allowliston the macOS node-host path.
Impact
Approval/authorization bypass in allowlist mode that can lead to unintended command execution on the node host.
Preconditions
- Target uses macOS node-host / companion-app execution path.
- Exec approvals set to
security=allowlist. - Ask mode is
on-missoroff. - Allowlist contains a benign executable used in a shell wrapper flow (for example
/bin/echo).
Reproduction (example)
Use a shell-wrapper command where the visible executable is allowlisted but the quoted payload contains substitution:
- command argv:
/bin/sh -lc 'echo "ok $(/usr/bin/id > /tmp/openclaw-poc-rce)"' - allowlist pattern includes
/bin/echo
Before the fix, allowlist analysis could resolve this as allowlisted while shell substitution still executed.
Remediation
- Upgrade to
2026.2.22(or newer) when released. - Temporary mitigation: set ask mode to
alwaysor set security mode todeny.
Fix Commit(s)
90a378ca3a9ecbf1634cd247f17a35f4612c6ca6
Release Process Note
patched_versions is pre-set to planned next release 2026.2.22. After npm release is out, advisory can be published directly.
OpenClaw thanks @tdjackey for reporting.
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| npm package | openclaw | < 2026.2.22 | 2026.2.22 |
References
- https://github.com/openclaw/openclaw/security/advisories/GHSA-9p38-94jf-hgjj
- https://nvd.nist.gov/vuln/detail/CVE-2026-22179
- https://github.com/openclaw/openclaw/commit/90a378ca3a9ecbf1634cd247f17a35f4612c6ca6
- https://github.com/openclaw/openclaw
- https://www.vulncheck.com/advisories/openclaw-allowlist-bypass-via-command-substitution-in-system-run
- CVSS vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N- Weakness (CWE)
CWE-78- Platform
- npm
- Package
openclaw- Disclosed
- 03.03.2026
- Updated
- 11.10.2026 10:22
Sources and licenses
OSV / GitHub Advisory Database - GHSA-9p38-94jf-hgjj - CC BY 4.0
Vulnerability history: openclaw
All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 589
- First → latest
- 02.2026 10.2026
- Without a fix
- 9
- Exploited in attacks
- 0
Severity breakdown
- Critical 20
- High 215
- Medium 300
- Low 54
Disclosures per year
- 2026: 589
-
OpenClaw has macOS `system.run` allowlist bypass via quoted command substitution this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.