Before OpenClaw 2026.3.31, exec allowlist matching could treat shell init-file wrapper invocations as if the approved script itself were being executed. Shell options such as --rcfile, --init-file, and --startup-file could therefore inherit allowlist trust from a matched script path even though the shell loaded attacker-chosen initialization first.
This issue only applied when exec allowlist or allow-always behavior was enabled and the attacker could steer a shell-wrapper command shape that used init-file options. The result was a narrower allowlist bypass, not generic arbitrary command execution from an untrusted boundary.
openclaw (npm)< 2026.3.31>= 2026.3.312026.4.10c8375424620e12777ef24c162eedc7e9fcfd7e3 — reject shell init-file script matchesThe fix shipped in OpenClaw 2026.3.31 on March 31, 2026. The current published npm release 2026.4.1 from April 1, 2026 also contains the fix.
Thanks @cyjhhh for reporting.
{
"github_reviewed": true,
"nvd_published_at": null,
"cwe_ids": [
"CWE-184"
],
"github_reviewed_at": "2026-04-07T18:14:35Z",
"severity": "MODERATE"
}