В Linux уже есть возможность задать ограничение на то, какие сисвызовы могут выполняться программой (включая после fork/execve), а какие будут возвращать ошибку, использовать эмулятор или вообще SIGKILL. Работает из-под пользователя тоже.
В качестве демо есть программа, которая «отключает» один сисвызов.
Есть ли что-то большее, чтобы задать можно было задавать «белый» или «чёрный» списки (с аргументами для некоторых типа prctl), но не настолько большое чтобы охватывать всю систему (типа SELinux) или требовать много всяких конфигов.
Что-то типа
limit_syscalls access brk close connect dup \
execve exit_group fcntl64 fstat64 getsockname \
getuid32 mmap2 mprotect munmap open read set_thread_area \
setuid32 socket write -- /bin/ping 127.0.0.1