do not auto-approve the find command if it contains options that write files or spawn commands (#482)
Updates `isSafeCommand()` so that an invocation of `find` is not auto-approved if it contains any of: `-exec`, `-execdir`, `-ok`, `-okdir`, `-delete`, `-fls`, `-fprint`, `-fprint0`, `-fprintf`.
This commit is contained in:
@@ -89,4 +89,56 @@ describe("canAutoApprove()", () => {
|
||||
|
||||
expect(check(["cargo", "build"])).toEqual({ type: "ask-user" });
|
||||
});
|
||||
|
||||
test("find", () => {
|
||||
expect(check(["find", ".", "-name", "file.txt"])).toEqual({
|
||||
type: "auto-approve",
|
||||
reason: "Find files or directories",
|
||||
group: "Searching",
|
||||
runInSandbox: false,
|
||||
});
|
||||
|
||||
// Options that can execute arbitrary commands.
|
||||
expect(
|
||||
check(["find", ".", "-name", "file.txt", "-exec", "rm", "{}", ";"]),
|
||||
).toEqual({
|
||||
type: "ask-user",
|
||||
});
|
||||
expect(
|
||||
check(["find", ".", "-name", "*.py", "-execdir", "python3", "{}", ";"]),
|
||||
).toEqual({
|
||||
type: "ask-user",
|
||||
});
|
||||
expect(
|
||||
check(["find", ".", "-name", "file.txt", "-ok", "rm", "{}", ";"]),
|
||||
).toEqual({
|
||||
type: "ask-user",
|
||||
});
|
||||
expect(
|
||||
check(["find", ".", "-name", "*.py", "-okdir", "python3", "{}", ";"]),
|
||||
).toEqual({
|
||||
type: "ask-user",
|
||||
});
|
||||
|
||||
// Option that deletes matching files.
|
||||
expect(check(["find", ".", "-delete", "-name", "file.txt"])).toEqual({
|
||||
type: "ask-user",
|
||||
});
|
||||
|
||||
// Options that write pathnames to a file.
|
||||
expect(check(["find", ".", "-fls", "/etc/passwd"])).toEqual({
|
||||
type: "ask-user",
|
||||
});
|
||||
expect(check(["find", ".", "-fprint", "/etc/passwd"])).toEqual({
|
||||
type: "ask-user",
|
||||
});
|
||||
expect(check(["find", ".", "-fprint0", "/etc/passwd"])).toEqual({
|
||||
type: "ask-user",
|
||||
});
|
||||
expect(
|
||||
check(["find", ".", "-fprintf", "/root/suid.txt", "%#m %u %p\n"]),
|
||||
).toEqual({
|
||||
type: "ask-user",
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user