mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-04 13:51:30 +00:00
fix(exec): harden shell-side approval guardrails (#57839)
* fix(exec): harden approval handling * fix(exec): tighten approval guardrails * fix(exec): reject prefixed approval commands * fix(exec): isolate shell approval guardrails * fix(exec): recurse through wrapped approval commands * fix(exec): restore allowlist wrapper import * fix(exec): strip env wrappers before approval detection * fix(exec): inspect nested shell wrapper options
This commit is contained in:
@@ -269,4 +269,31 @@ describe("exec host env validation", () => {
|
||||
}),
|
||||
).rejects.toThrow(/requires a sandbox runtime/);
|
||||
});
|
||||
|
||||
it.each([
|
||||
"echo ok && /approve abc123 allow-once",
|
||||
"echo ok | /approve abc123 deny",
|
||||
"echo ok\n/approve abc123 allow-once",
|
||||
"FOO=1 /approve abc123 allow-once",
|
||||
"env -i /approve abc123 deny",
|
||||
"env --ignore-environment /approve abc123 allow-once",
|
||||
"env -i FOO=1 /approve abc123 allow-once",
|
||||
"env -S '/approve abc123 deny'",
|
||||
"command /approve abc123 deny",
|
||||
"command -p /approve abc123 deny",
|
||||
"exec -a openclaw /approve abc123 deny",
|
||||
"sudo /approve abc123 allow-once",
|
||||
"sudo -E /approve abc123 allow-once",
|
||||
"bash -lc '/approve abc123 deny'",
|
||||
"bash -c 'sudo /approve abc123 allow-once'",
|
||||
"sh -c '/approve abc123 allow-once'",
|
||||
])("rejects /approve shell commands in %s", async (command) => {
|
||||
const tool = createExecTool({ host: "gateway", security: "full", ask: "off" });
|
||||
|
||||
await expect(
|
||||
tool.execute("call-approve", {
|
||||
command,
|
||||
}),
|
||||
).rejects.toThrow(/exec cannot run \/approve commands/);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user