In [email protected], node system.run approval-path hardening rewrote wrapper command argv in a way that changed execution semantics. A command shown/approved as a shell payload (for example echo SAFE) could execute a different local script when wrapper argv were rewritten.
openclaw (npm)2026.3.1 (latest published npm version as of March 2, 2026)2026.3.2 (released)Root cause was in node-host approval hardening for system.run:
- src/node-host/invoke-system-run-plan.ts rewrote argv[0] to the resolved executable.
- Wrapper resolution unwrapped dispatch wrappers, so input like ['env','sh','-c','echo SAFE'] resolved executable sh.
- The approved plan could become ['/bin/sh','sh','-c','echo SAFE'] while approval text remained echo SAFE.
That rewrite changed runtime behavior: /bin/sh interprets the extra sh positional argument as a script path, enabling execution of a local ./sh file from approved cwd instead of the approved payload text.
Approval-integrity break in host=node execution flow: operator-visible command text and executed behavior could diverge.
Exploit preconditions:
- attacker can influence wrapper argv and place a local file in approved working directory,
- operator grants approval for the displayed command.
dded569626b0d8e7bdab10b5e7528b6caf73a0f1[email protected].| Score | Percentile |
|---|---|
| 0.02% | 4.86% |
| Base score | Version | Severity | Vector |
|---|---|---|---|
| 6.7 | 3.1 | — |
|
| Type | Value |
|---|---|
| GHSA | GHSA-h3rm-6x7g-882f ↗ |
| CVE | CVE-2026-29608 ↗ |
| CWE id | Name |
|---|---|
| CWE-88 | Improper Neutralization of Argument Delimiters in a Command ('Argument Injection') |
Vulnerable version ranges and first patched releases as published by GitHub.
| Ecosystem | Package | Vulnerable range | First patched | Vulnerable functions |
|---|---|---|---|---|
| npm | openclaw | = 2026.3.1 | 2026.3.2 | — |