seccomp_stubs.c (3127B)
1 #include <seccomp.h> 2 #include <unistd.h> 3 #include <stdio.h> 4 #include <errno.h> 5 #include <fcntl.h> 6 #include <caml/mlvalues.h> 7 8 CAMLprim value 9 caml_seccomp(value unit) 10 { 11 scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_KILL); 12 13 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(accept4), 0); 14 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(access), 0); 15 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(arch_prctl), 0); 16 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(bind), 0); 17 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(brk), 0); 18 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(chdir), 0); 19 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(clone), 0); 20 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(close), 0); 21 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(connect), 0); 22 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(eventfd2), 0); 23 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(execve), 0); 24 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fcntl), 0); 25 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(futex), 0); 26 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getcwd), 0); 27 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getrandom), 0); 28 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getsockopt), 0); 29 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(landlock_add_rule), 0); 30 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(landlock_create_ruleset), 0); 31 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(landlock_restrict_self), 0); 32 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(listen), 0); 33 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(lseek), 0); 34 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap), 0); 35 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mprotect), 0); 36 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(munmap), 0); 37 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(newfstatat), 0); 38 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(openat), 0); 39 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(poll), 0); 40 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(prctl), 0); 41 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(pread64), 0); 42 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(prlimit64), 0); 43 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(pselect6), 0); 44 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(read), 0); 45 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(readlink), 0); 46 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(rseq), 0); 47 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(rt_sigaction), 0); 48 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(rt_sigprocmask), 0); 49 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(set_robust_list), 0); 50 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(set_tid_address), 0); 51 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(setgid), 0); 52 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(setsockopt), 0); 53 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(setuid), 0); 54 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(sigaltstack), 0); 55 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket), 0); 56 seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(write), 0); 57 58 if (seccomp_load(ctx) < 0) { 59 fprintf(stderr, "seccomp_load failed\n"); 60 return -1; 61 } 62 63 seccomp_release(ctx); 64 65 return 0; 66 }