diff --git a/foundations/src/security/common_syscall_allow_lists.rs b/foundations/src/security/common_syscall_allow_lists.rs index f49b533e..df9d5358 100644 --- a/foundations/src/security/common_syscall_allow_lists.rs +++ b/foundations/src/security/common_syscall_allow_lists.rs @@ -33,6 +33,15 @@ allow_list! { ..RUST_BASICS, exit, exit_group, + #[cfg(target_arch = "x86_64")] + pause, // `pause` can be invoked by std::process::exit() if multiple threads call it simultaneously + #[cfg(target_arch = "aarch64")] + ppoll if [ // glibc implements `pause` using ppoll with the following arguments on aarch64 + ArgCmp::Equal { arg_idx: 0, value: 0_u64.into() }, // fds = NULL + ArgCmp::Equal { arg_idx: 1, value: 0_u64.into() }, // nfds = 0 + ArgCmp::Equal { arg_idx: 2, value: 0_u64.into() }, // timeout = NULL + ArgCmp::Equal { arg_idx: 3, value: 0_u64.into() } // sigmask = NULL + ], kill if [ ArgCmp::Equal { arg_idx: 0, value: std::process::id().into() } ], tgkill if [ ArgCmp::Equal { arg_idx: 0, value: std::process::id().into() } ], getpid,