# New functionality Linux capabilities for dropping privs inside Isolates ## custom landlock configurations? more than just file read/write path create/list/delete unix socket, named pipe, character device, symlink, deny truncate, etc ## Simple mode Something either like "Network::everything()" (rather than Network::nothing etc) and "SystemIO::everything" or a separate wrapper over the existing RuleSet mechanism. # Nice to haves - better way to run isolates in tests - convenience function to enable ssl cert directories with landlock - convenience function to enable dns files/directories with landlock - update examples to use them - more builtin profiles take inspiration from pledge promises (https://man.openbsd.org/pledge.2) and systemd profiles https://github.com/systemd/systemd/blob/main/src/shared/seccomp-util.h https://github.com/systemd/systemd/blob/3989bdc1ad7cca4d75c06cdf601fea2cb37ba337/src/shared/seccomp-util.c#L285 see also old rkt allowlist https://github.com/rkt/rkt/blob/master/stage1/init/common/seccomp_wildcards.go - benchmarks - only allow fs access and run ripgrep, compare vs without - only allow network access and run warp or actix server - more complicated example involving server thread + fs writer thread vs no separation? - *just re-use existing libraries' benchmarks and add extrasafe calls* - make sure we're using a separate benchmark profile/cfg so that those dependencies aren't pulled in to ci - script (maybe already exists in libseccomp or systemd or firejail etc.) or extrasafe "util" API that you can run your tests with and it prints out the syscalls used - could even match against built-in profiles and make suggestions - ctx.run(|| func) rather than loading into the current thread, start a new thread and load the context just into that thread. additionally would make it easier/possible to use some of the unshare functionality built into clone - extrasafe! macro sugar over run() + get return value over channel need to determine what syscalls crossbeam channels need (if any) vs flume (if any) (std mpsc is going to be deprecated) - feature flag for macro with return value over channel - something to orchestrate "run these subthreads with these contexts but don't start them until the parent thread's context is loaded" see halldisplay/render/src/main.rs # Multiplatform bsd: pledge osx: Seatbelt (`sandboxd`), see gaol below windows: ProcessSystemCallDisablePolicy?, see chrome see https://github.com/servo/gaol/ and chrome? # Remove all dependencies If you're using extrasafe to provide extra security, it then becomes a target for vulnerabilities, including supply-chain attacks. ### syscalls Relatively easy to remove by copying directly into the repository, but comes with a maintenance burden of having to update the lists when new syscalls are created.