use super::super::classify::Effect;
use super::{ANY, Reach, Rule};
use Effect::{Destructive, OpenWorld, Read, Secret, TargetWrite};
use Reach::{ByRoot, Fixed};
pub const DEFAULT: &[Rule] = &[
("bz", ANY, Fixed(Secret)),
("env", ANY, Fixed(Secret)),
("printenv", ANY, Fixed(Secret)),
("gpg", ANY, Fixed(Secret)),
("ssh-add", ANY, Fixed(Secret)),
("ssh-keygen", ANY, Fixed(Secret)),
("security", ANY, Fixed(Secret)),
("keyctl", ANY, Fixed(Secret)),
("git", &["push", "--force"], Fixed(Destructive)),
("git", &["push", "-f"], Fixed(Destructive)),
("git", &["push", "--force-with-lease"], Fixed(Destructive)),
("git", &["reset", "--hard"], Fixed(Destructive)),
("git", &["clean", "-f"], Fixed(Destructive)),
("git", &["branch", "-D"], Fixed(Destructive)),
("git", &["update-ref", "-d"], Fixed(Destructive)),
("git", &["filter-branch"], Fixed(Destructive)),
("git", &["gc", "--prune"], Fixed(Destructive)),
("shred", ANY, Fixed(Destructive)),
("mkfs", ANY, Fixed(Destructive)),
("dd", ANY, Fixed(Destructive)),
(
"rm",
ANY,
ByRoot {
inside: TargetWrite,
outside: Destructive,
},
),
(
"rmdir",
ANY,
ByRoot {
inside: TargetWrite,
outside: Destructive,
},
),
("git", &["push"], Fixed(OpenWorld)),
("git", &["fetch"], Fixed(OpenWorld)),
("git", &["pull"], Fixed(OpenWorld)),
("git", &["clone"], Fixed(OpenWorld)),
("git", &["remote"], Fixed(OpenWorld)),
("curl", ANY, Fixed(OpenWorld)),
("wget", ANY, Fixed(OpenWorld)),
("nc", ANY, Fixed(OpenWorld)),
("ssh", ANY, Fixed(OpenWorld)),
("scp", ANY, Fixed(OpenWorld)),
("rsync", ANY, Fixed(OpenWorld)),
("sudo", ANY, Fixed(OpenWorld)),
("gh", ANY, Fixed(OpenWorld)),
("cargo", &["publish"], Fixed(OpenWorld)),
("cargo", &["install"], Fixed(OpenWorld)),
("bl", ANY, Fixed(TargetWrite)),
("litany", ANY, Fixed(TargetWrite)),
("git", ANY, Fixed(TargetWrite)),
("cargo", ANY, Fixed(TargetWrite)),
("make", ANY, Fixed(TargetWrite)),
(
"sed",
&["-i"],
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
(
"mkdir",
ANY,
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
(
"touch",
ANY,
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
(
"cp",
ANY,
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
(
"mv",
ANY,
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
(
"ln",
ANY,
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
(
"tee",
ANY,
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
(
"chmod",
ANY,
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
(
"truncate",
ANY,
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
(
"patch",
ANY,
ByRoot {
inside: TargetWrite,
outside: OpenWorld,
},
),
("ls", ANY, Fixed(Read)),
("cat", ANY, Fixed(Read)),
("head", ANY, Fixed(Read)),
("tail", ANY, Fixed(Read)),
("grep", ANY, Fixed(Read)),
("rg", ANY, Fixed(Read)),
("find", ANY, Fixed(Read)),
("wc", ANY, Fixed(Read)),
("file", ANY, Fixed(Read)),
("stat", ANY, Fixed(Read)),
("diff", ANY, Fixed(Read)),
("cmp", ANY, Fixed(Read)),
("which", ANY, Fixed(Read)),
("pwd", ANY, Fixed(Read)),
("echo", ANY, Fixed(Read)),
("printf", ANY, Fixed(Read)),
("true", ANY, Fixed(Read)),
("false", ANY, Fixed(Read)),
("test", ANY, Fixed(Read)),
("sort", ANY, Fixed(Read)),
("uniq", ANY, Fixed(Read)),
("cut", ANY, Fixed(Read)),
("tr", ANY, Fixed(Read)),
("sed", ANY, Fixed(Read)),
("awk", ANY, Fixed(Read)),
("jq", ANY, Fixed(Read)),
("basename", ANY, Fixed(Read)),
("dirname", ANY, Fixed(Read)),
("realpath", ANY, Fixed(Read)),
("readlink", ANY, Fixed(Read)),
("date", ANY, Fixed(Read)),
("du", ANY, Fixed(Read)),
("df", ANY, Fixed(Read)),
("ps", ANY, Fixed(Read)),
("whoami", ANY, Fixed(Read)),
("uname", ANY, Fixed(Read)),
("hostname", ANY, Fixed(Read)),
("sleep", ANY, Fixed(Read)),
("md5sum", ANY, Fixed(Read)),
("sha256sum", ANY, Fixed(Read)),
];
pub const SECRET_FRAGMENTS: &[&str] = &[
".ssh",
".aws",
".netrc",
".gnupg",
"id_rsa",
"id_ed25519",
"credentials",
".config/brazen",
];