我怎样才能找到所有必须列入 seccomp 白名单的系统调用?

How can I find all syscalls that have to be whitelisted for seccomp?

我有一个现有程序,我想使用 seccomp (v2) 对其进行沙盒处理。

如何找到我需要为该程序允许的 seccomp 规则?


我已经尝试为 strace -xfc a.out 打印的所有系统调用添加 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(…), 0),但显然这还不够,因为当我 [=20] 时我仍然得到 "SIGSYS, Bad system call" =] 带有 seccomp 的程序。

可能最可靠的方法是将您的 seccomp 过滤器切换为 return SECCOMP_RET_TRAP ("send catchable SIGSYS on error") 而不是 SECCOMP_RET_KILL ("kill the process with an uncatchable SIGSYS"),然后从信号处理程序打印 siginfo_t,然后自杀。