Summary
On Windows nodes, exec requests were executed via cmd.exe /d /s /c <rawCommand>. In allowlist/approval-gated mode, the allowlist analysis did not model Windows cmd.exe parsing and metacharacter behavior. A crafted command string could cause cmd.exe to interpret additional operations (for example command chaining via &, or expansion via %...% / !...!) beyond what was allowlisted/approved.
Affected Packages / Versions
- Package:
openclaw (npm)
- Affected:
<= 2026.2.1
- Patched:
>= 2026.2.2
- Latest (npm) as of 2026-02-14:
2026.2.13
Details
- Default installs: Not affected unless you opt into exec allowlist/approval gating on Windows nodes.
- Windows execution uses
cmd.exe via src/infra/node-shell.ts.
- The fix hardens Windows allowlist enforcement by:
- Passing the platform into allowlist analysis and rejecting Windows shell metacharacters.
- Treating
cmd.exe invocation as not allowlist-safe on Windows.
- Avoiding
cmd.exe entirely in allowlist mode by executing the parsed argv directly when possible.
Fix Commit(s)
a7f4a53ce80c98ba1452eb90802d447fca9bf3d6
Thanks @simecek for reporting.
References
Summary
On Windows nodes, exec requests were executed via
cmd.exe /d /s /c <rawCommand>. In allowlist/approval-gated mode, the allowlist analysis did not model Windowscmd.exeparsing and metacharacter behavior. A crafted command string could causecmd.exeto interpret additional operations (for example command chaining via&, or expansion via%...%/!...!) beyond what was allowlisted/approved.Affected Packages / Versions
openclaw(npm)<= 2026.2.1>= 2026.2.22026.2.13Details
cmd.exeviasrc/infra/node-shell.ts.cmd.exeinvocation as not allowlist-safe on Windows.cmd.exeentirely in allowlist mode by executing the parsed argv directly when possible.Fix Commit(s)
a7f4a53ce80c98ba1452eb90802d447fca9bf3d6Thanks @simecek for reporting.
References