CVE-2026-32003: OpenClaw has system.run shell-wrapper env injection via SHELLOPTS/PS4 can bypass allowlist intent (RCE)
Summary system.run allowed SHELLOPTS + PS4 environment injection to trigger command substitution during bash -lc xtrace expansion before the allowlisted command body executed. Affected Packages / Versions - Package: openclaw (npm) - Affected: <= 2026.2.21-2 (includes latest published npm version at triage time) - Patched (planned next release): 2026.2.22 Impact In allowlist mode, an attacker who can invoke…
Published Mar 3, 2026 · Updated Mar 30, 2026
Affected packages
openclaw
- Ecosystem
- npm
- Affected
- < 2026.2.22
- Fixed in
- 2026.2.22
- Check
npm ls openclaw
Advisory details
From the GitHub Advisory Database (CC BY 4.0).
Summary
system.run allowed SHELLOPTS + PS4 environment injection to trigger command substitution during bash -lc xtrace expansion before the allowlisted command body executed.
Affected Packages / Versions
- Package:
openclaw(npm) - Affected:
<= 2026.2.21-2(includes latest published npm version at triage time) - Patched (planned next release):
2026.2.22
Impact
In allowlist mode, an attacker who can invoke system.run with request-scoped env could execute additional shell commands outside the intended allowlisted command body.
Root Cause
Host exec env sanitization blocked startup-file vectors (BASH_ENV, ENV, etc.) but did not block SHELLOPTS/PS4. For shell wrappers (bash|sh|zsh ... -c/-lc), request env overrides were passed through and bash evaluated PS4 under xtrace, enabling command substitution.
Fix
- Block
SHELLOPTSandPS4in host exec env sanitizers (Node + macOS). - For shell wrappers (
bash|sh|zsh ... -c/-lc), reduce request-scoped env overrides to an explicit allowlist (TERM,LANG,LC_*,COLORTERM,NO_COLOR,FORCE_COLOR). - Add regression tests for TS and macOS paths.
Fix Commit(s)
e80c803fa887f9699ad87a9e906ab5c1ff85bd9a
Release Process Note
patched_versions is pre-set to the planned next release (2026.2.22). Once npm release 2026.2.22 is published, advisory publication is a final state action only.
Severity Rationale
This advisory is rated medium because exploitation requires a caller that can already invoke system.run with request-scoped env.
Under OpenClaw's documented trust model (SECURITY.md), authenticated Gateway callers are treated as trusted operators, and adversarial multi-operator / prompt-injection scenarios are out of scope.
The bug remains a real allowlist-intent bypass, but it does not cross a separate trust boundary in the documented deployment assumptions.
OpenClaw thanks @tdjackey for reporting.
Credited to tdjackey.
References
- https://github.com/openclaw/openclaw/security/advisories/GHSA-2fgq-7j6h-9rm4
- https://github.com/openclaw/openclaw/commit/e80c803fa887f9699ad87a9e906ab5c1ff85bd9a
- https://nvd.nist.gov/vuln/detail/CVE-2026-32003
- https://www.vulncheck.com/advisories/openclaw-remote-code-execution-via-shellopts-ps4-environment-injection-in-system-run
- https://github.com/advisories/GHSA-2fgq-7j6h-9rm4
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. No analysis has been written for this entry yet. Methodology
More OpenClaw vulnerabilities
All OpenClaw entriesCVE-2026-35630
OpenClaw: QQBot native approval buttons did not enforce configured approver identity
high8.0Jul 2, 2026CVE-2026-53806
OpenClaw: Combined POSIX shell options could confuse exec revalidation
high8.8Jul 2, 2026CVE-2026-53809
OpenClaw: Embedded runner policy could be confused by provider aliases
medium3.8Jul 2, 2026CVE-2026-53810
OpenClaw's marketplace runtime extension metadata could point at unscanned payloads
high8.8Jul 2, 2026CVE-2026-53811
OpenClaw: Matrix allowFrom could bind to mutable display names
high8.8Jul 2, 2026CVE-2026-53812
OpenClaw's browser act interactions could bypass private-network navigation checks
medium7.7Jul 2, 2026
