Assign syscalls into groups. Add whitelist mode (default).
Classify syscalls into groups, for x86_64 only for now. Up to date for 5.15, generate some #ifndef for syscalls introduced since 5.10. Only support x86_64 therefore at this point. Switch from blacklisting to a default whitelist.
This commit is contained in:
부모
0d7c5bd6d4
커밋
db17e58deb
55
gengroup.py
Executable file
55
gengroup.py
Executable file
@ -0,0 +1,55 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import re
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: gengroup groupfile")
|
||||
sys.exit(1)
|
||||
fd = open(sys.argv[1], "r")
|
||||
|
||||
lines = fd.read().splitlines()
|
||||
|
||||
groupnames = set()
|
||||
ifndef = dict()
|
||||
|
||||
def print_ifndefs():
|
||||
for name in ifndef:
|
||||
print("#ifndef __NR_%s" % name)
|
||||
print("#define __NR_%s %s" % (name, ifndef[name]))
|
||||
print("#endif")
|
||||
|
||||
def print_defines(names):
|
||||
names = sorted(names)
|
||||
i = 0
|
||||
for name in names:
|
||||
define = "#define %s ((uint64_t)1<<%s)" % (name, i)
|
||||
print(define)
|
||||
i = i + 1
|
||||
|
||||
for line in lines:
|
||||
if line[0] == '#':
|
||||
continue
|
||||
|
||||
splitted = line.split(' ')
|
||||
if len(splitted) < 2:
|
||||
print("Misformated line:", line)
|
||||
sys.exit(1)
|
||||
|
||||
currentsyscall = splitted[0]
|
||||
currentgroups = splitted[1].split(',')
|
||||
|
||||
flags = splitted[2] if len(splitted) > 2 else ""
|
||||
if any( not s or s.isspace() for s in currentgroups ):
|
||||
print("Misformated line (empty values):", line)
|
||||
sys.exit(1)
|
||||
groupnames.update(currentgroups)
|
||||
|
||||
genifndef = re.match(r"genifndef\((\d+)*\)", flags)
|
||||
if genifndef:
|
||||
ifndef[currentsyscall] = genifndef.groups(1)[0]
|
||||
|
||||
array_line = "{QSSB_SYS(%s), %s}," % (currentsyscall, '|'.join(currentgroups))
|
||||
print(array_line)
|
||||
|
||||
print_ifndefs()
|
||||
print_defines(groupnames)
|
||||
|
363
grouping_x86-64.txt
Normal file
363
grouping_x86-64.txt
Normal file
@ -0,0 +1,363 @@
|
||||
# Assign system calls to groups. In the future, may also include simple arg filtering.
|
||||
read QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
write QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
open QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
close QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
stat QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
fstat QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
lstat QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
poll QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
lseek QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
mmap QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
mprotect QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
munmap QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
brk QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
rt_sigaction QSSB_SYSCGROUP_RT,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
rt_sigprocmask QSSB_SYSCGROUP_RT,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
rt_sigreturn QSSB_SYSCGROUP_RT,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
ioctl QSSB_SYSCGROUP_IOCTL,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
pread64 QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
pwrite64 QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
readv QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
writev QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
access QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
pipe QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
select QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
sched_yield QSSB_SYSCGROUP_SCHED,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
mremap QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
msync QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
mincore QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
madvise QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
shmget QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
shmat QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
shmctl QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
dup QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
dup2 QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
pause QSSB_SYSCGROUP_PAUSE,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
nanosleep QSSB_SYSCGROUP_TIMER,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
getitimer QSSB_SYSCGROUP_TIMER,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
alarm QSSB_SYSCGROUP_TIMER,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
setitimer QSSB_SYSCGROUP_TIMER,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
getpid QSSB_SYSCGROUP_PROCESS,QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
sendfile QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
socket QSSB_SYSCGROUP_SOCKET
|
||||
connect QSSB_SYSCGROUP_SOCKET
|
||||
accept QSSB_SYSCGROUP_SOCKET
|
||||
sendto QSSB_SYSCGROUP_SOCKET
|
||||
recvfrom QSSB_SYSCGROUP_SOCKET
|
||||
sendmsg QSSB_SYSCGROUP_SOCKET
|
||||
recvmsg QSSB_SYSCGROUP_SOCKET
|
||||
shutdown QSSB_SYSCGROUP_SOCKET
|
||||
bind QSSB_SYSCGROUP_SOCKET
|
||||
listen QSSB_SYSCGROUP_SOCKET
|
||||
getsockname QSSB_SYSCGROUP_SOCKET
|
||||
getpeername QSSB_SYSCGROUP_SOCKET
|
||||
socketpair QSSB_SYSCGROUP_SOCKET,QSSB_SYSCGROUP_IPC
|
||||
setsockopt QSSB_SYSCGROUP_SOCKET
|
||||
getsockopt QSSB_SYSCGROUP_SOCKET
|
||||
clone QSSB_SYSCGROUP_CLONE,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
fork QSSB_SYSCGROUP_CLONE,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
vfork QSSB_SYSCGROUP_CLONE,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
execve QSSB_SYSCGROUP_CLONE,QSSB_SYSCGROUP_EXEC
|
||||
exit QSSB_SYSCGROUP_PROCESS,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
wait4 QSSB_SYSCGROUP_EXEC
|
||||
kill QSSB_SYSCGROUP_KILL
|
||||
uname QSSB_SYSCGROUP_SYS,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
semget QSSB_SYSCGROUP_SHM,QSSB_SYSCGROUP_IPC,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
semop QSSB_SYSCGROUP_SHM,QSSB_SYSCGROUP_IPC,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
semctl QSSB_SYSCGROUP_SHM,QSSB_SYSCGROUP_IPC,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
shmdt QSSB_SYSCGROUP_SHM,QSSB_SYSCGROUP_IPC,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
msgget QSSB_SYSCGROUP_IPC,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
msgsnd QSSB_SYSCGROUP_IPC,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
msgrcv QSSB_SYSCGROUP_IPC,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
msgctl QSSB_SYSCGROUP_IPC,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
fcntl QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
flock QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
fsync QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
fdatasync QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
truncate QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
ftruncate QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
getdents QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
getcwd QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
chdir QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
fchdir QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
rename QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
mkdir QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
rmdir QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
creat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
link QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
unlink QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
symlink QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
readlink QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
chmod QSSB_SYSCGROUP_PERMS,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
fchmod QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
chown QSSB_SYSCGROUP_PERMS,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
fchown QSSB_SYSCGROUP_PERMS,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
lchown QSSB_SYSCGROUP_PERMS,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
umask QSSB_SYSCGROUP_PERMS,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
gettimeofday QSSB_SYSCGROUP_TIME,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
getrlimit QSSB_SYSCGROUP_RES,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
getrusage QSSB_SYSCGROUP_RES,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
sysinfo QSSB_SYSCGROUP_SYS,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
times QSSB_SYSCGROUP_TIME,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
ptrace QSSB_SYSCGROUP_PTRACE,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
getuid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
syslog QSSB_SYSCGROUP_SYS
|
||||
getgid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
setuid QSSB_SYSCGROUP_ID
|
||||
setgid QSSB_SYSCGROUP_ID
|
||||
geteuid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
getegid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
setpgid QSSB_SYSCGROUP_ID
|
||||
getppid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
getpgrp QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
setsid QSSB_SYSCGROUP_ID
|
||||
setreuid QSSB_SYSCGROUP_ID
|
||||
setregid QSSB_SYSCGROUP_ID
|
||||
getgroups QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
setgroups QSSB_SYSCGROUP_ID
|
||||
setresuid QSSB_SYSCGROUP_ID
|
||||
getresuid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
setresgid QSSB_SYSCGROUP_ID
|
||||
getresgid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
getpgid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
setfsuid QSSB_SYSCGROUP_ID
|
||||
setfsgid QSSB_SYSCGROUP_ID
|
||||
getsid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
capget QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
capset QSSB_SYSCGROUP_ID
|
||||
rt_sigpending QSSB_SYSCGROUP_RT,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
rt_sigtimedwait QSSB_SYSCGROUP_RT,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
rt_sigqueueinfo QSSB_SYSCGROUP_RT,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
rt_sigsuspend QSSB_SYSCGROUP_RT,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
sigaltstack QSSB_SYSCGROUP_THREAD,QSSB_SYSCGROUP_SIGNAL
|
||||
utime QSSB_SYSCGROUP_TIME,QSSB_SYSCGROUP_FS
|
||||
mknod QSSB_SYSCGROUP_DEV,QSSB_SYSCGROUP_FS
|
||||
uselib QSSB_SYSCGROUP_LIB,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
personality QSSB_SYSCGROUP_PROCESS
|
||||
ustat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_STAT,QSSB_SYSCGROUP_FS
|
||||
statfs QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_STAT,QSSB_SYSCGROUP_FS
|
||||
fstatfs QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_STAT,QSSB_SYSCGROUP_FS
|
||||
sysfs QSSB_SYSCGROUP_SYS,QSSB_SYSCGROUP_FS
|
||||
getpriority QSSB_SYSCGROUP_SCHED
|
||||
setpriority QSSB_SYSCGROUP_SCHED
|
||||
sched_setparam QSSB_SYSCGROUP_SCHED
|
||||
sched_getparam QSSB_SYSCGROUP_SCHED
|
||||
sched_setscheduler QSSB_SYSCGROUP_SCHED
|
||||
sched_getscheduler QSSB_SYSCGROUP_SCHED
|
||||
sched_get_priority_max QSSB_SYSCGROUP_SCHED
|
||||
sched_get_priority_min QSSB_SYSCGROUP_SCHED
|
||||
sched_rr_get_interval QSSB_SYSCGROUP_SCHED
|
||||
mlock QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
munlock QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
mlockall QSSB_SYSCGROUP_MEMORY
|
||||
munlockall QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
vhangup QSSB_SYSCGROUP_TTY
|
||||
modify_ldt QSSB_SYSCGROUP_PROCESS
|
||||
pivot_root QSSB_SYSCGROUP_CHROOT
|
||||
_sysctl QSSB_SYSCGROUP_SYS
|
||||
prctl QSSB_SYSCGROUP_PROCESS
|
||||
arch_prctl QSSB_SYSCGROUP_PROCESS
|
||||
adjtimex QSSB_SYSCGROUP_CLOCK
|
||||
setrlimit QSSB_SYSCGROUP_RES
|
||||
chroot QSSB_SYSCGROUP_CHROOT,QSSB_SYSCGROUP_FS
|
||||
sync QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
acct QSSB_SYSCGROUP_PROCESS
|
||||
settimeofday QSSB_SYSCGROUP_TIME
|
||||
mount QSSB_SYSCGROUP_MOUNT,QSSB_SYSCGROUP_FS
|
||||
umount2 QSSB_SYSCGROUP_UMOUNT,QSSB_SYSCGROUP_FS
|
||||
swapon QSSB_SYSCGROUP_SWAP
|
||||
swapoff QSSB_SYSCGROUP_SWAP
|
||||
reboot QSSB_SYSCGROUP_POWER
|
||||
sethostname QSSB_SYSCGROUP_HOST
|
||||
setdomainname QSSB_SYSCGROUP_HOST
|
||||
iopl QSSB_SYSCGROUP_IOPL
|
||||
ioperm QSSB_SYSCGROUP_IOPL
|
||||
create_module QSSB_SYSCGROUP_KMOD
|
||||
init_module QSSB_SYSCGROUP_KMOD
|
||||
delete_module QSSB_SYSCGROUP_KMOD
|
||||
get_kernel_syms QSSB_SYSCGROUP_KMOD
|
||||
query_module QSSB_SYSCGROUP_KMOD
|
||||
quotactl QSSB_SYSCGROUP_QUOTA
|
||||
nfsservctl QSSB_SYSCGROUP_NONE
|
||||
getpmsg QSSB_SYSCGROUP_UNIMPLEMENTED
|
||||
putpmsg QSSB_SYSCGROUP_UNIMPLEMENTED
|
||||
afs_syscall QSSB_SYSCGROUP_UNIMPLEMENTED
|
||||
tuxcall QSSB_SYSCGROUP_UNIMPLEMENTED
|
||||
security QSSB_SYSCGROUP_UNIMPLEMENTED
|
||||
gettid QSSB_SYSCGROUP_ID,QSSB_SYSCGROUP_THREAD
|
||||
readahead QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_FS
|
||||
setxattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_FS
|
||||
lsetxattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_FS
|
||||
fsetxattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_FS
|
||||
getxattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
lgetxattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
fgetxattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
listxattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_FS
|
||||
llistxattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_FS
|
||||
flistxattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_FS
|
||||
removexattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_FS
|
||||
lremovexattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_FS
|
||||
fremovexattr QSSB_SYSCGROUP_XATTR,QSSB_SYSCGROUP_FS
|
||||
tkill QSSB_SYSCGROUP_THREAD,QSSB_SYSCGROUP_SIGNAL
|
||||
time QSSB_SYSCGROUP_TIME
|
||||
futex QSSB_SYSCGROUP_THREAD,QSSB_SYSCGROUP_FUTEX
|
||||
sched_setaffinity QSSB_SYSCGROUP_SCHED
|
||||
sched_getaffinity QSSB_SYSCGROUP_SCHED
|
||||
set_thread_area QSSB_SYSCGROUP_THREAD
|
||||
io_setup QSSB_SYSCGROUP_IO
|
||||
io_destroy QSSB_SYSCGROUP_IO
|
||||
io_getevents QSSB_SYSCGROUP_IO
|
||||
io_submit QSSB_SYSCGROUP_IO
|
||||
io_cancel QSSB_SYSCGROUP_IO
|
||||
get_thread_area QSSB_SYSCGROUP_THREAD
|
||||
lookup_dcookie QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_FS
|
||||
epoll_create QSSB_SYSCGROUP_STDIO
|
||||
epoll_ctl_old QSSB_SYSCGROUP_STDIO
|
||||
epoll_wait_old QSSB_SYSCGROUP_STDIO
|
||||
remap_file_pages QSSB_SYSCGROUP_NONE
|
||||
getdents64 QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_FS
|
||||
set_tid_address QSSB_SYSCGROUP_THREAD
|
||||
restart_syscall QSSB_SYSCGROUP_SYSCALL
|
||||
semtimedop QSSB_SYSCGROUP_SEM
|
||||
fadvise64 QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_FD
|
||||
timer_create QSSB_SYSCGROUP_TIMER
|
||||
timer_settime QSSB_SYSCGROUP_TIMER
|
||||
timer_gettime QSSB_SYSCGROUP_TIMER
|
||||
timer_getoverrun QSSB_SYSCGROUP_TIMER
|
||||
timer_delete QSSB_SYSCGROUP_TIMER
|
||||
clock_settime QSSB_SYSCGROUP_TIME
|
||||
clock_gettime QSSB_SYSCGROUP_TIME
|
||||
clock_getres QSSB_SYSCGROUP_TIME
|
||||
clock_nanosleep QSSB_SYSCGROUP_TIME
|
||||
exit_group QSSB_SYSCGROUP_EXIT,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
epoll_wait QSSB_SYSCGROUP_FD
|
||||
epoll_ctl QSSB_SYSCGROUP_FD
|
||||
tgkill QSSB_SYSCGROUP_SIGNAL,QSSB_SYSCGROUP_THREAD
|
||||
utimes QSSB_SYSCGROUP_PATH
|
||||
vserver QSSB_SYSCGROUP_UNIMPLEMENTED
|
||||
mbind QSSB_SYSCGROUP_MEMORY
|
||||
set_mempolicy QSSB_SYSCGROUP_MEMORY
|
||||
get_mempolicy QSSB_SYSCGROUP_MEMORY
|
||||
mq_open QSSB_SYSCGROUP_MQ,QSSB_SYSCGROUP_IPC
|
||||
mq_unlink QSSB_SYSCGROUP_MQ,QSSB_SYSCGROUP_IPC
|
||||
mq_timedsend QSSB_SYSCGROUP_MQ,QSSB_SYSCGROUP_IPC
|
||||
mq_timedreceive QSSB_SYSCGROUP_MQ,QSSB_SYSCGROUP_IPC
|
||||
mq_notify QSSB_SYSCGROUP_MQ,QSSB_SYSCGROUP_IPC
|
||||
mq_getsetattr QSSB_SYSCGROUP_MQ,QSSB_SYSCGROUP_IPC
|
||||
kexec_load QSSB_SYSCGROUP_KEXEC
|
||||
waitid QSSB_SYSCGROUP_SIGNAL
|
||||
add_key QSSB_SYSCGROUP_KEYS
|
||||
request_key QSSB_SYSCGROUP_KEYS
|
||||
keyctl QSSB_SYSCGROUP_KEYS
|
||||
ioprio_set QSSB_SYSCGROUP_PRIO
|
||||
ioprio_get QSSB_SYSCGROUP_PRIO
|
||||
inotify_init QSSB_SYSCGROUP_INOTIFY
|
||||
inotify_add_watch QSSB_SYSCGROUP_INOTIFY
|
||||
inotify_rm_watch QSSB_SYSCGROUP_INOTIFY
|
||||
migrate_pages QSSB_SYSCGROUP_PROCESS
|
||||
openat QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
mkdirat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
mknodat QSSB_SYSCGROUP_DEV,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
fchownat QSSB_SYSCGROUP_PERMS,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
futimesat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
newfstatat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
unlinkat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
renameat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
linkat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
symlinkat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
readlinkat QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
fchmodat QSSB_SYSCGROUP_PERMS,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
faccessat QSSB_SYSCGROUP_PERMS,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
pselect6 QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
ppoll QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW,QSSB_SYSCGROUP_FS
|
||||
unshare QSSB_SYSCGROUP_NS,QSSB_SYSCGROUP_FS
|
||||
set_robust_list QSSB_SYSCGROUP_FUTEX
|
||||
get_robust_list QSSB_SYSCGROUP_FUTEX
|
||||
splice QSSB_SYSCGROUP_FD
|
||||
tee QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
sync_file_range QSSB_SYSCGROUP_FD
|
||||
vmsplice QSSB_SYSCGROUP_FD
|
||||
move_pages QSSB_SYSCGROUP_PROCESS
|
||||
utimensat QSSB_SYSCGROUP_PATH
|
||||
epoll_pwait QSSB_SYSCGROUP_STDIO
|
||||
signalfd QSSB_SYSCGROUP_SIGNAL
|
||||
timerfd_create QSSB_SYSCGROUP_TIMER
|
||||
eventfd QSSB_SYSCGROUP_FD
|
||||
fallocate QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_FD
|
||||
timerfd_settime QSSB_SYSCGROUP_TIMER
|
||||
timerfd_gettime QSSB_SYSCGROUP_TIMER
|
||||
accept4 QSSB_SYSCGROUP_SOCKET
|
||||
signalfd4 QSSB_SYSCGROUP_FD
|
||||
eventfd2 QSSB_SYSCGROUP_FD
|
||||
epoll_create1 QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
dup3 QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
pipe2 QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
inotify_init1 QSSB_SYSCGROUP_INOTIFY
|
||||
preadv QSSB_SYSCGROUP_STDIO
|
||||
pwritev QSSB_SYSCGROUP_STDIO
|
||||
rt_tgsigqueueinfo QSSB_SYSCGROUP_RT
|
||||
perf_event_open QSSB_SYSCGROUP_PERF
|
||||
recvmmsg QSSB_SYSCGROUP_SOCKET
|
||||
fanotify_init QSSB_SYSCGROUP_FANOTIFY
|
||||
fanotify_mark QSSB_SYSCGROUP_FANOTIFY
|
||||
prlimit64 QSSB_SYSCGROUP_RES
|
||||
name_to_handle_at QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_FS
|
||||
open_by_handle_at QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_FS
|
||||
clock_adjtime QSSB_SYSCGROUP_CLOCK
|
||||
syncfs QSSB_SYSCGROUP_FD
|
||||
sendmmsg QSSB_SYSCGROUP_SOCKET
|
||||
setns QSSB_SYSCGROUP_NS
|
||||
getcpu QSSB_SYSCGROUP_SCHED
|
||||
#maybe IPC, but feels wrong
|
||||
process_vm_readv QSSB_SYSCGROUP_NONE
|
||||
process_vm_writev QSSB_SYSCGROUP_NONE
|
||||
kcmp QSSB_SYSCGROUP_NONE
|
||||
finit_module QSSB_SYSCGROUP_KMOD
|
||||
sched_setattr QSSB_SYSCGROUP_SCHED
|
||||
sched_getattr QSSB_SYSCGROUP_SCHED,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
renameat2 QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
seccomp QSSB_SYSCGROUP_NONE
|
||||
getrandom QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
memfd_create QSSB_SYSCGROUP_MEMORY,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
kexec_file_load QSSB_SYSCGROUP_KEXEC
|
||||
bpf QSSB_SYSCGROUP_NONE
|
||||
execveat QSSB_SYSCGROUP_EXEC
|
||||
userfaultfd QSSB_SYSCGROUP_NONE
|
||||
membarrier QSSB_SYSCGROUP_NONE
|
||||
mlock2 QSSB_SYSCGROUP_MEMORY
|
||||
copy_file_range QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_DEFAULT_ALLOW
|
||||
preadv2 QSSB_SYSCGROUP_STDIO
|
||||
pwritev2 QSSB_SYSCGROUP_STDIO
|
||||
#Those are newer than 5.10, wrap them in ifndef so we can compile on old systems
|
||||
pkey_mprotect QSSB_SYSCGROUP_PKEY genifndef(329)
|
||||
pkey_alloc QSSB_SYSCGROUP_PKEY genifndef(330)
|
||||
pkey_free QSSB_SYSCGROUP_PKEY genifndef(331)
|
||||
statx QSSB_SYSCGROUP_STAT,QSSB_SYSCGROUP_DEFAULT_ALLOW genifndef(332)
|
||||
io_pgetevents QSSB_SYSCGROUP_NONE genifndef(333)
|
||||
rseq QSSB_SYSCGROUP_THREAD genifndef(334)
|
||||
pidfd_send_signal QSSB_SYSCGROUP_PIDFD genifndef(424)
|
||||
io_uring_setup QSSB_SYSCGROUP_IOURING genifndef(425)
|
||||
io_uring_enter QSSB_SYSCGROUP_IOURING genifndef(426)
|
||||
io_uring_register QSSB_SYSCGROUP_IOURING genifndef(427)
|
||||
open_tree QSSB_SYSCGROUP_NEWMOUNT genifndef(428)
|
||||
move_mount QSSB_SYSCGROUP_NEWMOUNT genifndef(429)
|
||||
fsopen QSSB_SYSCGROUP_NEWMOUNT genifndef(430)
|
||||
fsconfig QSSB_SYSCGROUP_NEWMOUNT genifndef(431)
|
||||
fsmount QSSB_SYSCGROUP_NEWMOUNT genifndef(432)
|
||||
fspick QSSB_SYSCGROUP_NEWMOUNT genifndef(433)
|
||||
pidfd_open QSSB_SYSCGROUP_PIDFD genifndef(434)
|
||||
clone3 QSSB_SYSCGROUP_CLONE,QSSB_SYSCGROUP_DEFAULT_ALLOW genifndef(435)
|
||||
close_range QSSB_SYSCGROUP_STDIO,QSSB_SYSCGROUP_DEFAULT_ALLOW genifndef(436)
|
||||
openat2 QSSB_SYSCGROUP_FD,QSSB_SYSCGROUP_PATH,QSSB_SYSCGROUP_DEFAULT_ALLOW genifndef(437)
|
||||
pidfd_getfd QSSB_SYSCGROUP_PIDFD genifndef(438)
|
||||
faccessat2 QSSB_SYSCGROUP_PERMS,QSSB_SYSCGROUP_DEFAULT_ALLOW genifndef(439)
|
||||
process_madvise QSSB_SYSCGROUP_MEMORY genifndef(440)
|
||||
epoll_pwait2 QSSB_SYSCGROUP_STDIO genifndef(441)
|
||||
mount_setattr QSSB_SYSCGROUP_NONE genifndef(442)
|
||||
quotactl_fd QSSB_SYSCGROUP_QUOTA genifndef(443)
|
||||
landlock_create_ruleset QSSB_SYSCGROUP_LANDLOCK genifndef(444)
|
||||
landlock_add_rule QSSB_SYSCGROUP_LANDLOCK genifndef(445)
|
||||
landlock_restrict_self QSSB_SYSCGROUP_LANDLOCK genifndef(446)
|
||||
memfd_secret QSSB_SYSCGROUP_NONE genifndef(447)
|
||||
process_mrelease QSSB_SYSCGROUP_NONE genifndef(448)
|
614
qssb.h
614
qssb.h
@ -60,12 +60,10 @@
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(__i386__)
|
||||
#define SECCOMP_AUDIT_ARCH AUDIT_ARCH_I386
|
||||
#elif defined(__x86_64__)
|
||||
#if defined(__x86_64__)
|
||||
#define SECCOMP_AUDIT_ARCH AUDIT_ARCH_X86_64
|
||||
#else
|
||||
#warning Seccomp support has not been tested for qssb.h for this platform yet
|
||||
#error Seccomp support has not been tested for qssb.h for this platform yet
|
||||
#endif
|
||||
|
||||
#define SYSCALL(nr, jt) \
|
||||
@ -84,7 +82,7 @@
|
||||
#define QSSB_TEMP_DIR "/tmp"
|
||||
#endif
|
||||
|
||||
#define QSSB_SYS(x) (__NR_##x)
|
||||
#define QSSB_SYS(x) __NR_##x
|
||||
|
||||
#define QSSB_FS_ALLOW_READ 1<<0
|
||||
#define QSSB_FS_ALLOW_WRITE (1<<1)
|
||||
@ -136,53 +134,534 @@ static inline int landlock_restrict_self(const int ruleset_fd,
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Most exploits have more need for those syscalls than the
|
||||
* exploited programs. In cases they are needed, this list should be
|
||||
* filtered or simply not used.
|
||||
*/
|
||||
/* TODO: more execv* in some architectures */
|
||||
/* TODO: add more */
|
||||
static long default_blacklisted_syscalls[] = {
|
||||
QSSB_SYS(setuid),
|
||||
QSSB_SYS(setgid),
|
||||
QSSB_SYS(chroot),
|
||||
QSSB_SYS(pivot_root),
|
||||
QSSB_SYS(mount),
|
||||
QSSB_SYS(setns),
|
||||
QSSB_SYS(unshare),
|
||||
QSSB_SYS(ptrace),
|
||||
QSSB_SYS(personality),
|
||||
QSSB_SYS(execve),
|
||||
QSSB_SYS(process_vm_readv),
|
||||
QSSB_SYS(process_vm_writev),
|
||||
QSSB_SYS(userfaultfd),
|
||||
QSSB_SYS(init_module),
|
||||
QSSB_SYS(finit_module),
|
||||
QSSB_SYS(delete_module),
|
||||
#if defined(__x86_64__)
|
||||
#ifndef __NR_pkey_mprotect
|
||||
#define __NR_pkey_mprotect 329
|
||||
#endif
|
||||
#ifndef __NR_pkey_alloc
|
||||
#define __NR_pkey_alloc 330
|
||||
#endif
|
||||
#ifndef __NR_pkey_free
|
||||
#define __NR_pkey_free 331
|
||||
#endif
|
||||
#ifndef __NR_statx
|
||||
#define __NR_statx 332
|
||||
#endif
|
||||
#ifndef __NR_io_pgetevents
|
||||
#define __NR_io_pgetevents 333
|
||||
#endif
|
||||
#ifndef __NR_rseq
|
||||
#define __NR_rseq 334
|
||||
#endif
|
||||
#ifndef __NR_pidfd_send_signal
|
||||
#define __NR_pidfd_send_signal 424
|
||||
#endif
|
||||
#ifndef __NR_io_uring_setup
|
||||
#define __NR_io_uring_setup 425
|
||||
#endif
|
||||
#ifndef __NR_io_uring_enter
|
||||
#define __NR_io_uring_enter 426
|
||||
#endif
|
||||
#ifndef __NR_io_uring_register
|
||||
#define __NR_io_uring_register 427
|
||||
#endif
|
||||
#ifndef __NR_open_tree
|
||||
#define __NR_open_tree 428
|
||||
#endif
|
||||
#ifndef __NR_move_mount
|
||||
#define __NR_move_mount 429
|
||||
#endif
|
||||
#ifndef __NR_fsopen
|
||||
#define __NR_fsopen 430
|
||||
#endif
|
||||
#ifndef __NR_fsconfig
|
||||
#define __NR_fsconfig 431
|
||||
#endif
|
||||
#ifndef __NR_fsmount
|
||||
#define __NR_fsmount 432
|
||||
#endif
|
||||
#ifndef __NR_fspick
|
||||
#define __NR_fspick 433
|
||||
#endif
|
||||
#ifndef __NR_pidfd_open
|
||||
#define __NR_pidfd_open 434
|
||||
#endif
|
||||
#ifndef __NR_clone3
|
||||
#define __NR_clone3 435
|
||||
#endif
|
||||
#ifndef __NR_close_range
|
||||
#define __NR_close_range 436
|
||||
#endif
|
||||
#ifndef __NR_openat2
|
||||
#define __NR_openat2 437
|
||||
#endif
|
||||
#ifndef __NR_pidfd_getfd
|
||||
#define __NR_pidfd_getfd 438
|
||||
#endif
|
||||
#ifndef __NR_faccessat2
|
||||
#define __NR_faccessat2 439
|
||||
#endif
|
||||
#ifndef __NR_process_madvise
|
||||
#define __NR_process_madvise 440
|
||||
#endif
|
||||
#ifndef __NR_epoll_pwait2
|
||||
#define __NR_epoll_pwait2 441
|
||||
#endif
|
||||
#ifndef __NR_mount_setattr
|
||||
#define __NR_mount_setattr 442
|
||||
#endif
|
||||
#ifndef __NR_quotactl_fd
|
||||
#define __NR_quotactl_fd 443
|
||||
#endif
|
||||
#ifndef __NR_landlock_create_ruleset
|
||||
#define __NR_landlock_create_ruleset 444
|
||||
#endif
|
||||
#ifndef __NR_landlock_add_rule
|
||||
#define __NR_landlock_add_rule 445
|
||||
#endif
|
||||
#ifndef __NR_landlock_restrict_self
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#endif
|
||||
#ifndef __NR_memfd_secret
|
||||
#define __NR_memfd_secret 447
|
||||
#endif
|
||||
#ifndef __NR_process_mrelease
|
||||
#define __NR_process_mrelease 448
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define QSSB_SYSCGROUP_CHROOT ((uint64_t)1<<0)
|
||||
#define QSSB_SYSCGROUP_CLOCK ((uint64_t)1<<1)
|
||||
#define QSSB_SYSCGROUP_CLONE ((uint64_t)1<<2)
|
||||
#define QSSB_SYSCGROUP_DEFAULT_ALLOW ((uint64_t)1<<3)
|
||||
#define QSSB_SYSCGROUP_DEV ((uint64_t)1<<4)
|
||||
#define QSSB_SYSCGROUP_EXEC ((uint64_t)1<<5)
|
||||
#define QSSB_SYSCGROUP_EXIT ((uint64_t)1<<6)
|
||||
#define QSSB_SYSCGROUP_FANOTIFY ((uint64_t)1<<7)
|
||||
#define QSSB_SYSCGROUP_FD ((uint64_t)1<<8)
|
||||
#define QSSB_SYSCGROUP_FS ((uint64_t)1<<9)
|
||||
#define QSSB_SYSCGROUP_FUTEX ((uint64_t)1<<10)
|
||||
#define QSSB_SYSCGROUP_HOST ((uint64_t)1<<11)
|
||||
#define QSSB_SYSCGROUP_ID ((uint64_t)1<<12)
|
||||
#define QSSB_SYSCGROUP_INOTIFY ((uint64_t)1<<13)
|
||||
#define QSSB_SYSCGROUP_IO ((uint64_t)1<<14)
|
||||
#define QSSB_SYSCGROUP_IOCTL ((uint64_t)1<<15)
|
||||
#define QSSB_SYSCGROUP_IOPL ((uint64_t)1<<16)
|
||||
#define QSSB_SYSCGROUP_IOURING ((uint64_t)1<<17)
|
||||
#define QSSB_SYSCGROUP_IPC ((uint64_t)1<<18)
|
||||
#define QSSB_SYSCGROUP_KEXEC ((uint64_t)1<<19)
|
||||
#define QSSB_SYSCGROUP_KEYS ((uint64_t)1<<20)
|
||||
#define QSSB_SYSCGROUP_KILL ((uint64_t)1<<21)
|
||||
#define QSSB_SYSCGROUP_KMOD ((uint64_t)1<<22)
|
||||
#define QSSB_SYSCGROUP_LANDLOCK ((uint64_t)1<<23)
|
||||
#define QSSB_SYSCGROUP_LIB ((uint64_t)1<<24)
|
||||
#define QSSB_SYSCGROUP_MEMORY ((uint64_t)1<<25)
|
||||
#define QSSB_SYSCGROUP_MOUNT ((uint64_t)1<<26)
|
||||
#define QSSB_SYSCGROUP_MQ ((uint64_t)1<<27)
|
||||
#define QSSB_SYSCGROUP_NEWMOUNT ((uint64_t)1<<28)
|
||||
#define QSSB_SYSCGROUP_NONE ((uint64_t)1<<29)
|
||||
#define QSSB_SYSCGROUP_NS ((uint64_t)1<<30)
|
||||
#define QSSB_SYSCGROUP_PATH ((uint64_t)1<<31)
|
||||
#define QSSB_SYSCGROUP_PAUSE ((uint64_t)1<<32)
|
||||
#define QSSB_SYSCGROUP_PERF ((uint64_t)1<<33)
|
||||
#define QSSB_SYSCGROUP_PERMS ((uint64_t)1<<34)
|
||||
#define QSSB_SYSCGROUP_PIDFD ((uint64_t)1<<35)
|
||||
#define QSSB_SYSCGROUP_PKEY ((uint64_t)1<<36)
|
||||
#define QSSB_SYSCGROUP_POWER ((uint64_t)1<<37)
|
||||
#define QSSB_SYSCGROUP_PRIO ((uint64_t)1<<38)
|
||||
#define QSSB_SYSCGROUP_PROCESS ((uint64_t)1<<39)
|
||||
#define QSSB_SYSCGROUP_PTRACE ((uint64_t)1<<40)
|
||||
#define QSSB_SYSCGROUP_QUOTA ((uint64_t)1<<41)
|
||||
#define QSSB_SYSCGROUP_RES ((uint64_t)1<<42)
|
||||
#define QSSB_SYSCGROUP_RT ((uint64_t)1<<43)
|
||||
#define QSSB_SYSCGROUP_SCHED ((uint64_t)1<<44)
|
||||
#define QSSB_SYSCGROUP_SEM ((uint64_t)1<<45)
|
||||
#define QSSB_SYSCGROUP_SHM ((uint64_t)1<<46)
|
||||
#define QSSB_SYSCGROUP_SIGNAL ((uint64_t)1<<47)
|
||||
#define QSSB_SYSCGROUP_SOCKET ((uint64_t)1<<48)
|
||||
#define QSSB_SYSCGROUP_STAT ((uint64_t)1<<49)
|
||||
#define QSSB_SYSCGROUP_STDIO ((uint64_t)1<<50)
|
||||
#define QSSB_SYSCGROUP_SWAP ((uint64_t)1<<51)
|
||||
#define QSSB_SYSCGROUP_SYS ((uint64_t)1<<52)
|
||||
#define QSSB_SYSCGROUP_SYSCALL ((uint64_t)1<<53)
|
||||
#define QSSB_SYSCGROUP_THREAD ((uint64_t)1<<54)
|
||||
#define QSSB_SYSCGROUP_TIME ((uint64_t)1<<55)
|
||||
#define QSSB_SYSCGROUP_TIMER ((uint64_t)1<<56)
|
||||
#define QSSB_SYSCGROUP_TTY ((uint64_t)1<<57)
|
||||
#define QSSB_SYSCGROUP_UMOUNT ((uint64_t)1<<58)
|
||||
#define QSSB_SYSCGROUP_UNIMPLEMENTED ((uint64_t)1<<59)
|
||||
#define QSSB_SYSCGROUP_XATTR ((uint64_t)1<<60)
|
||||
|
||||
struct syscall_group_map
|
||||
{
|
||||
long syscall;
|
||||
uint64_t groupmask;
|
||||
};
|
||||
|
||||
/* TODO: Check for completion
|
||||
* Known blacklisting problem (catch up game, etc.)
|
||||
*
|
||||
* However, we use it to enhance "no_fs" policy, which does not solely rely
|
||||
* on seccomp anyway */
|
||||
static long fs_access_syscalls[] = {
|
||||
QSSB_SYS(chdir),
|
||||
QSSB_SYS(truncate),
|
||||
QSSB_SYS(stat),
|
||||
QSSB_SYS(flock),
|
||||
QSSB_SYS(chmod),
|
||||
QSSB_SYS(chown),
|
||||
QSSB_SYS(setxattr),
|
||||
QSSB_SYS(utime),
|
||||
QSSB_SYS(ioctl),
|
||||
QSSB_SYS(fcntl),
|
||||
QSSB_SYS(access),
|
||||
QSSB_SYS(open),
|
||||
QSSB_SYS(openat),
|
||||
QSSB_SYS(unlink),
|
||||
struct syscall_group_map sc_group_map[] = {
|
||||
{QSSB_SYS(read), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(write), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(open), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(close), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(stat), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fstat), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(lstat), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(poll), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(lseek), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(mmap), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(mprotect), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(munmap), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(brk), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(rt_sigaction), QSSB_SYSCGROUP_RT|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(rt_sigprocmask), QSSB_SYSCGROUP_RT|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(rt_sigreturn), QSSB_SYSCGROUP_RT|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(ioctl), QSSB_SYSCGROUP_IOCTL|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(pread64), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(pwrite64), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(readv), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(writev), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(access), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(pipe), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(select), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(sched_yield), QSSB_SYSCGROUP_SCHED|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(mremap), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(msync), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(mincore), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(madvise), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(shmget), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(shmat), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(shmctl), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(dup), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(dup2), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(pause), QSSB_SYSCGROUP_PAUSE|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(nanosleep), QSSB_SYSCGROUP_TIMER|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(getitimer), QSSB_SYSCGROUP_TIMER|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(alarm), QSSB_SYSCGROUP_TIMER|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(setitimer), QSSB_SYSCGROUP_TIMER|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(getpid), QSSB_SYSCGROUP_PROCESS|QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(sendfile), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(socket), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(connect), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(accept), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(sendto), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(recvfrom), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(sendmsg), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(recvmsg), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(shutdown), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(bind), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(listen), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(getsockname), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(getpeername), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(socketpair), QSSB_SYSCGROUP_SOCKET|QSSB_SYSCGROUP_IPC},
|
||||
{QSSB_SYS(setsockopt), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(getsockopt), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(clone), QSSB_SYSCGROUP_CLONE|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(fork), QSSB_SYSCGROUP_CLONE|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(vfork), QSSB_SYSCGROUP_CLONE|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(execve), QSSB_SYSCGROUP_CLONE|QSSB_SYSCGROUP_EXEC},
|
||||
{QSSB_SYS(exit), QSSB_SYSCGROUP_PROCESS|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(wait4), QSSB_SYSCGROUP_EXEC},
|
||||
{QSSB_SYS(kill), QSSB_SYSCGROUP_KILL},
|
||||
{QSSB_SYS(uname), QSSB_SYSCGROUP_SYS|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(semget), QSSB_SYSCGROUP_SHM|QSSB_SYSCGROUP_IPC|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(semop), QSSB_SYSCGROUP_SHM|QSSB_SYSCGROUP_IPC|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(semctl), QSSB_SYSCGROUP_SHM|QSSB_SYSCGROUP_IPC|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(shmdt), QSSB_SYSCGROUP_SHM|QSSB_SYSCGROUP_IPC|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(msgget), QSSB_SYSCGROUP_IPC|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(msgsnd), QSSB_SYSCGROUP_IPC|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(msgrcv), QSSB_SYSCGROUP_IPC|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(msgctl), QSSB_SYSCGROUP_IPC|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(fcntl), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(flock), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(fsync), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(fdatasync), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(truncate), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(ftruncate), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(getdents), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(getcwd), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(chdir), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fchdir), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(rename), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(mkdir), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(rmdir), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(creat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(link), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(unlink), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(symlink), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(readlink), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(chmod), QSSB_SYSCGROUP_PERMS|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fchmod), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(chown), QSSB_SYSCGROUP_PERMS|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fchown), QSSB_SYSCGROUP_PERMS|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(lchown), QSSB_SYSCGROUP_PERMS|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(umask), QSSB_SYSCGROUP_PERMS|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(gettimeofday), QSSB_SYSCGROUP_TIME|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(getrlimit), QSSB_SYSCGROUP_RES|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(getrusage), QSSB_SYSCGROUP_RES|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(sysinfo), QSSB_SYSCGROUP_SYS|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(times), QSSB_SYSCGROUP_TIME|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(ptrace), QSSB_SYSCGROUP_PTRACE|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(getuid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(syslog), QSSB_SYSCGROUP_SYS},
|
||||
{QSSB_SYS(getgid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(setuid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(setgid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(geteuid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(getegid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(setpgid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(getppid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(getpgrp), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(setsid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(setreuid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(setregid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(getgroups), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(setgroups), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(setresuid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(getresuid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(setresgid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(getresgid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(getpgid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(setfsuid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(setfsgid), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(getsid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(capget), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(capset), QSSB_SYSCGROUP_ID},
|
||||
{QSSB_SYS(rt_sigpending), QSSB_SYSCGROUP_RT|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(rt_sigtimedwait), QSSB_SYSCGROUP_RT|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(rt_sigqueueinfo), QSSB_SYSCGROUP_RT|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(rt_sigsuspend), QSSB_SYSCGROUP_RT|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(sigaltstack), QSSB_SYSCGROUP_THREAD|QSSB_SYSCGROUP_SIGNAL},
|
||||
{QSSB_SYS(utime), QSSB_SYSCGROUP_TIME|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(mknod), QSSB_SYSCGROUP_DEV|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(uselib), QSSB_SYSCGROUP_LIB|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(personality), QSSB_SYSCGROUP_PROCESS},
|
||||
{QSSB_SYS(ustat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_STAT|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(statfs), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_STAT|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fstatfs), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_STAT|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(sysfs), QSSB_SYSCGROUP_SYS|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(getpriority), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(setpriority), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(sched_setparam), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(sched_getparam), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(sched_setscheduler), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(sched_getscheduler), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(sched_get_priority_max), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(sched_get_priority_min), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(sched_rr_get_interval), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(mlock), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(munlock), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(mlockall), QSSB_SYSCGROUP_MEMORY},
|
||||
{QSSB_SYS(munlockall), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(vhangup), QSSB_SYSCGROUP_TTY},
|
||||
{QSSB_SYS(modify_ldt), QSSB_SYSCGROUP_PROCESS},
|
||||
{QSSB_SYS(pivot_root), QSSB_SYSCGROUP_CHROOT},
|
||||
{QSSB_SYS(_sysctl), QSSB_SYSCGROUP_SYS},
|
||||
{QSSB_SYS(prctl), QSSB_SYSCGROUP_PROCESS},
|
||||
{QSSB_SYS(arch_prctl), QSSB_SYSCGROUP_PROCESS},
|
||||
{QSSB_SYS(adjtimex), QSSB_SYSCGROUP_CLOCK},
|
||||
{QSSB_SYS(setrlimit), QSSB_SYSCGROUP_RES},
|
||||
{QSSB_SYS(chroot), QSSB_SYSCGROUP_CHROOT|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(sync), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(acct), QSSB_SYSCGROUP_PROCESS},
|
||||
{QSSB_SYS(settimeofday), QSSB_SYSCGROUP_TIME},
|
||||
{QSSB_SYS(mount), QSSB_SYSCGROUP_MOUNT|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(umount2), QSSB_SYSCGROUP_UMOUNT|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(swapon), QSSB_SYSCGROUP_SWAP},
|
||||
{QSSB_SYS(swapoff), QSSB_SYSCGROUP_SWAP},
|
||||
{QSSB_SYS(reboot), QSSB_SYSCGROUP_POWER},
|
||||
{QSSB_SYS(sethostname), QSSB_SYSCGROUP_HOST},
|
||||
{QSSB_SYS(setdomainname), QSSB_SYSCGROUP_HOST},
|
||||
{QSSB_SYS(iopl), QSSB_SYSCGROUP_IOPL},
|
||||
{QSSB_SYS(ioperm), QSSB_SYSCGROUP_IOPL},
|
||||
{QSSB_SYS(create_module), QSSB_SYSCGROUP_KMOD},
|
||||
{QSSB_SYS(init_module), QSSB_SYSCGROUP_KMOD},
|
||||
{QSSB_SYS(delete_module), QSSB_SYSCGROUP_KMOD},
|
||||
{QSSB_SYS(get_kernel_syms), QSSB_SYSCGROUP_KMOD},
|
||||
{QSSB_SYS(query_module), QSSB_SYSCGROUP_KMOD},
|
||||
{QSSB_SYS(quotactl), QSSB_SYSCGROUP_QUOTA},
|
||||
{QSSB_SYS(nfsservctl), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(getpmsg), QSSB_SYSCGROUP_UNIMPLEMENTED},
|
||||
{QSSB_SYS(putpmsg), QSSB_SYSCGROUP_UNIMPLEMENTED},
|
||||
{QSSB_SYS(afs_syscall), QSSB_SYSCGROUP_UNIMPLEMENTED},
|
||||
{QSSB_SYS(tuxcall), QSSB_SYSCGROUP_UNIMPLEMENTED},
|
||||
{QSSB_SYS(security), QSSB_SYSCGROUP_UNIMPLEMENTED},
|
||||
{QSSB_SYS(gettid), QSSB_SYSCGROUP_ID|QSSB_SYSCGROUP_THREAD},
|
||||
{QSSB_SYS(readahead), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(setxattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(lsetxattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fsetxattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(getxattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(lgetxattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fgetxattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(listxattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(llistxattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(flistxattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(removexattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(lremovexattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fremovexattr), QSSB_SYSCGROUP_XATTR|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(tkill), QSSB_SYSCGROUP_THREAD|QSSB_SYSCGROUP_SIGNAL},
|
||||
{QSSB_SYS(time), QSSB_SYSCGROUP_TIME},
|
||||
{QSSB_SYS(futex), QSSB_SYSCGROUP_THREAD|QSSB_SYSCGROUP_FUTEX},
|
||||
{QSSB_SYS(sched_setaffinity), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(sched_getaffinity), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(set_thread_area), QSSB_SYSCGROUP_THREAD},
|
||||
{QSSB_SYS(io_setup), QSSB_SYSCGROUP_IO},
|
||||
{QSSB_SYS(io_destroy), QSSB_SYSCGROUP_IO},
|
||||
{QSSB_SYS(io_getevents), QSSB_SYSCGROUP_IO},
|
||||
{QSSB_SYS(io_submit), QSSB_SYSCGROUP_IO},
|
||||
{QSSB_SYS(io_cancel), QSSB_SYSCGROUP_IO},
|
||||
{QSSB_SYS(get_thread_area), QSSB_SYSCGROUP_THREAD},
|
||||
{QSSB_SYS(lookup_dcookie), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(epoll_create), QSSB_SYSCGROUP_STDIO},
|
||||
{QSSB_SYS(epoll_ctl_old), QSSB_SYSCGROUP_STDIO},
|
||||
{QSSB_SYS(epoll_wait_old), QSSB_SYSCGROUP_STDIO},
|
||||
{QSSB_SYS(remap_file_pages), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(getdents64), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(set_tid_address), QSSB_SYSCGROUP_THREAD},
|
||||
{QSSB_SYS(restart_syscall), QSSB_SYSCGROUP_SYSCALL},
|
||||
{QSSB_SYS(semtimedop), QSSB_SYSCGROUP_SEM},
|
||||
{QSSB_SYS(fadvise64), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(timer_create), QSSB_SYSCGROUP_TIMER},
|
||||
{QSSB_SYS(timer_settime), QSSB_SYSCGROUP_TIMER},
|
||||
{QSSB_SYS(timer_gettime), QSSB_SYSCGROUP_TIMER},
|
||||
{QSSB_SYS(timer_getoverrun), QSSB_SYSCGROUP_TIMER},
|
||||
{QSSB_SYS(timer_delete), QSSB_SYSCGROUP_TIMER},
|
||||
{QSSB_SYS(clock_settime), QSSB_SYSCGROUP_TIME},
|
||||
{QSSB_SYS(clock_gettime), QSSB_SYSCGROUP_TIME},
|
||||
{QSSB_SYS(clock_getres), QSSB_SYSCGROUP_TIME},
|
||||
{QSSB_SYS(clock_nanosleep), QSSB_SYSCGROUP_TIME},
|
||||
{QSSB_SYS(exit_group), QSSB_SYSCGROUP_EXIT|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(epoll_wait), QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(epoll_ctl), QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(tgkill), QSSB_SYSCGROUP_SIGNAL|QSSB_SYSCGROUP_THREAD},
|
||||
{QSSB_SYS(utimes), QSSB_SYSCGROUP_PATH},
|
||||
{QSSB_SYS(vserver), QSSB_SYSCGROUP_UNIMPLEMENTED},
|
||||
{QSSB_SYS(mbind), QSSB_SYSCGROUP_MEMORY},
|
||||
{QSSB_SYS(set_mempolicy), QSSB_SYSCGROUP_MEMORY},
|
||||
{QSSB_SYS(get_mempolicy), QSSB_SYSCGROUP_MEMORY},
|
||||
{QSSB_SYS(mq_open), QSSB_SYSCGROUP_MQ|QSSB_SYSCGROUP_IPC},
|
||||
{QSSB_SYS(mq_unlink), QSSB_SYSCGROUP_MQ|QSSB_SYSCGROUP_IPC},
|
||||
{QSSB_SYS(mq_timedsend), QSSB_SYSCGROUP_MQ|QSSB_SYSCGROUP_IPC},
|
||||
{QSSB_SYS(mq_timedreceive), QSSB_SYSCGROUP_MQ|QSSB_SYSCGROUP_IPC},
|
||||
{QSSB_SYS(mq_notify), QSSB_SYSCGROUP_MQ|QSSB_SYSCGROUP_IPC},
|
||||
{QSSB_SYS(mq_getsetattr), QSSB_SYSCGROUP_MQ|QSSB_SYSCGROUP_IPC},
|
||||
{QSSB_SYS(kexec_load), QSSB_SYSCGROUP_KEXEC},
|
||||
{QSSB_SYS(waitid), QSSB_SYSCGROUP_SIGNAL},
|
||||
{QSSB_SYS(add_key), QSSB_SYSCGROUP_KEYS},
|
||||
{QSSB_SYS(request_key), QSSB_SYSCGROUP_KEYS},
|
||||
{QSSB_SYS(keyctl), QSSB_SYSCGROUP_KEYS},
|
||||
{QSSB_SYS(ioprio_set), QSSB_SYSCGROUP_PRIO},
|
||||
{QSSB_SYS(ioprio_get), QSSB_SYSCGROUP_PRIO},
|
||||
{QSSB_SYS(inotify_init), QSSB_SYSCGROUP_INOTIFY},
|
||||
{QSSB_SYS(inotify_add_watch), QSSB_SYSCGROUP_INOTIFY},
|
||||
{QSSB_SYS(inotify_rm_watch), QSSB_SYSCGROUP_INOTIFY},
|
||||
{QSSB_SYS(migrate_pages), QSSB_SYSCGROUP_PROCESS},
|
||||
{QSSB_SYS(openat), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(mkdirat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(mknodat), QSSB_SYSCGROUP_DEV|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fchownat), QSSB_SYSCGROUP_PERMS|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(futimesat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(newfstatat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(unlinkat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(renameat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(linkat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(symlinkat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(readlinkat), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(fchmodat), QSSB_SYSCGROUP_PERMS|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(faccessat), QSSB_SYSCGROUP_PERMS|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(pselect6), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(ppoll), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(unshare), QSSB_SYSCGROUP_NS|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(set_robust_list), QSSB_SYSCGROUP_FUTEX},
|
||||
{QSSB_SYS(get_robust_list), QSSB_SYSCGROUP_FUTEX},
|
||||
{QSSB_SYS(splice), QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(tee), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(sync_file_range), QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(vmsplice), QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(move_pages), QSSB_SYSCGROUP_PROCESS},
|
||||
{QSSB_SYS(utimensat), QSSB_SYSCGROUP_PATH},
|
||||
{QSSB_SYS(epoll_pwait), QSSB_SYSCGROUP_STDIO},
|
||||
{QSSB_SYS(signalfd), QSSB_SYSCGROUP_SIGNAL},
|
||||
{QSSB_SYS(timerfd_create), QSSB_SYSCGROUP_TIMER},
|
||||
{QSSB_SYS(eventfd), QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(fallocate), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(timerfd_settime), QSSB_SYSCGROUP_TIMER},
|
||||
{QSSB_SYS(timerfd_gettime), QSSB_SYSCGROUP_TIMER},
|
||||
{QSSB_SYS(accept4), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(signalfd4), QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(eventfd2), QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(epoll_create1), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(dup3), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(pipe2), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(inotify_init1), QSSB_SYSCGROUP_INOTIFY},
|
||||
{QSSB_SYS(preadv), QSSB_SYSCGROUP_STDIO},
|
||||
{QSSB_SYS(pwritev), QSSB_SYSCGROUP_STDIO},
|
||||
{QSSB_SYS(rt_tgsigqueueinfo), QSSB_SYSCGROUP_RT},
|
||||
{QSSB_SYS(perf_event_open), QSSB_SYSCGROUP_PERF},
|
||||
{QSSB_SYS(recvmmsg), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(fanotify_init), QSSB_SYSCGROUP_FANOTIFY},
|
||||
{QSSB_SYS(fanotify_mark), QSSB_SYSCGROUP_FANOTIFY},
|
||||
{QSSB_SYS(prlimit64), QSSB_SYSCGROUP_RES},
|
||||
{QSSB_SYS(name_to_handle_at), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(open_by_handle_at), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_FS},
|
||||
{QSSB_SYS(clock_adjtime), QSSB_SYSCGROUP_CLOCK},
|
||||
{QSSB_SYS(syncfs), QSSB_SYSCGROUP_FD},
|
||||
{QSSB_SYS(sendmmsg), QSSB_SYSCGROUP_SOCKET},
|
||||
{QSSB_SYS(setns), QSSB_SYSCGROUP_NS},
|
||||
{QSSB_SYS(getcpu), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(process_vm_readv), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(process_vm_writev), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(kcmp), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(finit_module), QSSB_SYSCGROUP_KMOD},
|
||||
{QSSB_SYS(sched_setattr), QSSB_SYSCGROUP_SCHED},
|
||||
{QSSB_SYS(sched_getattr), QSSB_SYSCGROUP_SCHED|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(renameat2), QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(seccomp), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(getrandom), QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(memfd_create), QSSB_SYSCGROUP_MEMORY|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(kexec_file_load), QSSB_SYSCGROUP_KEXEC},
|
||||
{QSSB_SYS(bpf), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(execveat), QSSB_SYSCGROUP_EXEC},
|
||||
{QSSB_SYS(userfaultfd), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(membarrier), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(mlock2), QSSB_SYSCGROUP_MEMORY},
|
||||
{QSSB_SYS(copy_file_range), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(preadv2), QSSB_SYSCGROUP_STDIO},
|
||||
{QSSB_SYS(pwritev2), QSSB_SYSCGROUP_STDIO},
|
||||
{QSSB_SYS(pkey_mprotect), QSSB_SYSCGROUP_PKEY},
|
||||
{QSSB_SYS(pkey_alloc), QSSB_SYSCGROUP_PKEY},
|
||||
{QSSB_SYS(pkey_free), QSSB_SYSCGROUP_PKEY},
|
||||
{QSSB_SYS(statx), QSSB_SYSCGROUP_STAT|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(io_pgetevents), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(rseq), QSSB_SYSCGROUP_THREAD},
|
||||
{QSSB_SYS(pidfd_send_signal), QSSB_SYSCGROUP_PIDFD},
|
||||
{QSSB_SYS(io_uring_setup), QSSB_SYSCGROUP_IOURING},
|
||||
{QSSB_SYS(io_uring_enter), QSSB_SYSCGROUP_IOURING},
|
||||
{QSSB_SYS(io_uring_register), QSSB_SYSCGROUP_IOURING},
|
||||
{QSSB_SYS(open_tree), QSSB_SYSCGROUP_NEWMOUNT},
|
||||
{QSSB_SYS(move_mount), QSSB_SYSCGROUP_NEWMOUNT},
|
||||
{QSSB_SYS(fsopen), QSSB_SYSCGROUP_NEWMOUNT},
|
||||
{QSSB_SYS(fsconfig), QSSB_SYSCGROUP_NEWMOUNT},
|
||||
{QSSB_SYS(fsmount), QSSB_SYSCGROUP_NEWMOUNT},
|
||||
{QSSB_SYS(fspick), QSSB_SYSCGROUP_NEWMOUNT},
|
||||
{QSSB_SYS(pidfd_open), QSSB_SYSCGROUP_PIDFD},
|
||||
{QSSB_SYS(clone3), QSSB_SYSCGROUP_CLONE|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(close_range), QSSB_SYSCGROUP_STDIO|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(openat2), QSSB_SYSCGROUP_FD|QSSB_SYSCGROUP_PATH|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(pidfd_getfd), QSSB_SYSCGROUP_PIDFD},
|
||||
{QSSB_SYS(faccessat2), QSSB_SYSCGROUP_PERMS|QSSB_SYSCGROUP_DEFAULT_ALLOW},
|
||||
{QSSB_SYS(process_madvise), QSSB_SYSCGROUP_MEMORY},
|
||||
{QSSB_SYS(epoll_pwait2), QSSB_SYSCGROUP_STDIO},
|
||||
{QSSB_SYS(mount_setattr), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(quotactl_fd), QSSB_SYSCGROUP_QUOTA},
|
||||
{QSSB_SYS(landlock_create_ruleset), QSSB_SYSCGROUP_LANDLOCK},
|
||||
{QSSB_SYS(landlock_add_rule), QSSB_SYSCGROUP_LANDLOCK},
|
||||
{QSSB_SYS(landlock_restrict_self), QSSB_SYSCGROUP_LANDLOCK},
|
||||
{QSSB_SYS(memfd_secret), QSSB_SYSCGROUP_NONE},
|
||||
{QSSB_SYS(process_mrelease), QSSB_SYSCGROUP_NONE}
|
||||
};
|
||||
|
||||
|
||||
struct qssb_path_policy
|
||||
{
|
||||
const char *path;
|
||||
@ -341,6 +820,35 @@ int qssb_append_syscall_default_policy(struct qssb_policy *qssb_policy, unsigned
|
||||
return qssb_append_syscall_policy(qssb_policy, default_policy, QSSB_SYSCALL_MATCH_ALL);
|
||||
}
|
||||
|
||||
static void get_group_syscalls(uint64_t mask, long *syscalls, size_t *n)
|
||||
{
|
||||
size_t count = 0;
|
||||
for(unsigned long i = 0; i < sizeof(sc_group_map)/sizeof(sc_group_map[0]); i++)
|
||||
{
|
||||
struct syscall_group_map *current = &sc_group_map[i];
|
||||
if(current->groupmask & mask)
|
||||
{
|
||||
syscalls[count] = current->syscall;
|
||||
++count;
|
||||
}
|
||||
}
|
||||
*n = count;
|
||||
}
|
||||
|
||||
int qssb_append_group_syscall_policy(struct qssb_policy *qssb_policy, unsigned int syscall_policy, uint64_t groupmask)
|
||||
{
|
||||
long syscalls[400] = { 0 };
|
||||
size_t n = 0;
|
||||
get_group_syscalls(groupmask, syscalls, &n);
|
||||
if(n == 0)
|
||||
{
|
||||
QSSB_LOG_ERROR("Error: No syscalls found for group mask\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return qssb_append_syscalls_policy(qssb_policy, syscall_policy, syscalls, n);
|
||||
}
|
||||
|
||||
/* Creates the default policy
|
||||
* Must be freed using qssb_free_policy
|
||||
* @returns: default policy */
|
||||
@ -781,7 +1289,6 @@ static int qssb_enable_syscall_policy(struct qssb_policy *policy)
|
||||
long *syscalls = NULL;
|
||||
size_t n = 0;
|
||||
get_syscall_array(current_policy, &syscalls, &n);
|
||||
|
||||
unsigned short int newsize;
|
||||
if(__builtin_add_overflow(current_filter_index, n, &newsize))
|
||||
{
|
||||
@ -1055,8 +1562,7 @@ static int enable_no_fs(struct qssb_policy *policy)
|
||||
}
|
||||
|
||||
//TODO: we don't have to do this if there whitelisted policies, in that case we will be behind the default deny anyway
|
||||
size_t fs_access_syscalls_count = sizeof(fs_access_syscalls)/sizeof(fs_access_syscalls[0]);
|
||||
int ret = qssb_append_syscalls_policy(policy, QSSB_SYSCALL_DENY_RET_ERROR, fs_access_syscalls, fs_access_syscalls_count);
|
||||
int ret = qssb_append_group_syscall_policy(policy, QSSB_SYSCALL_DENY_RET_ERROR, QSSB_SYSCGROUP_FS);
|
||||
if(ret != 0)
|
||||
{
|
||||
QSSB_LOG_ERROR("Failed to add system calls to policy\n");
|
||||
@ -1072,14 +1578,12 @@ static int enable_no_fs(struct qssb_policy *policy)
|
||||
|
||||
static int qssb_append_predefined_standard_syscall_policy(struct qssb_policy *policy)
|
||||
{
|
||||
size_t blacklisted_syscalls_count = sizeof(default_blacklisted_syscalls)/sizeof(default_blacklisted_syscalls[0]);
|
||||
|
||||
int appendresult = qssb_append_syscalls_policy(policy, QSSB_SYSCALL_DENY_KILL_PROCESS, default_blacklisted_syscalls, blacklisted_syscalls_count);
|
||||
int appendresult = qssb_append_group_syscall_policy(policy, QSSB_SYSCALL_ALLOW, QSSB_SYSCGROUP_DEFAULT_ALLOW);
|
||||
if(appendresult != 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
appendresult = qssb_append_syscall_default_policy(policy, QSSB_SYSCALL_ALLOW);
|
||||
appendresult = qssb_append_syscall_default_policy(policy, QSSB_SYSCALL_DENY_RET_ERROR);
|
||||
if(appendresult != 0)
|
||||
{
|
||||
return 1;
|
||||
|
19
test.c
19
test.c
@ -182,6 +182,24 @@ int test_seccomp_errno()
|
||||
return test_successful_exit(&do_test_seccomp_errno);
|
||||
}
|
||||
|
||||
static int test_seccomp_group()
|
||||
{
|
||||
struct qssb_policy *policy = qssb_init_policy();
|
||||
|
||||
qssb_append_group_syscall_policy(policy, QSSB_SYSCALL_DENY_RET_ERROR, QSSB_SYSCGROUP_SOCKET);
|
||||
qssb_append_syscall_default_policy(policy, QSSB_SYSCALL_ALLOW);
|
||||
|
||||
xqssb_enable_policy(policy);
|
||||
|
||||
int s = socket(AF_INET,SOCK_STREAM,0);
|
||||
if(s != -1)
|
||||
{
|
||||
printf("Failed: socket was expected to return error\n");
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int test_landlock()
|
||||
{
|
||||
struct qssb_policy *policy = qssb_init_policy();
|
||||
@ -280,6 +298,7 @@ struct dispatcher dispatchers[] = {
|
||||
{ "seccomp-x32-kill", &test_seccomp_x32_kill},
|
||||
{ "seccomp-require-last-matchall", &test_seccomp_require_last_matchall},
|
||||
{ "seccomp-errno", &test_seccomp_errno},
|
||||
{ "seccomp-group", &test_seccomp_group},
|
||||
{ "landlock", &test_landlock},
|
||||
{ "landlock-deny-write", &test_landlock_deny_write },
|
||||
{ "no_fs", &test_nofs},
|
||||
|
불러오는 중...
Reference in New Issue
Block a user