Как найти все системные вызовы, которые должны быть внесены в белый список для seccomp?

У меня есть существующая программа, которую я хотел бы поместить в песочницу с помощью seccomp (v2).

Как узнать, какие правила seccomp мне нужно разрешить для программы?


Я пытался добавить seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(…), 0) для всех системных вызовов, напечатанных strace -xfc a.out, но, видимо, этого было недостаточно, так как я все еще получаю "SIGSYS, Bad system call" при запуске программы с помощью seccomp.


person Kornel    schedule 01.07.2018    source источник


Ответы (1)


Вероятно, самый надежный способ — переключить фильтр seccomp так, чтобы он возвращал SECCOMP_RET_TRAP («отправить перехватываемый SIGSYS при ошибке»), а не SECCOMP_RET_KILL («убить процесс неперехватываемым SIGSYS»), затем вывести siginfo_t из обработчика сигнала, а затем совершить самоубийство. .

person o11c    schedule 01.07.2018
comment
Это эквивалентно scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_TRAP);? - person Kornel; 01.07.2018
comment
Да, это одна из библиотек уровня C; Я отвечал на уровне системного вызова, так как это то же самое. - person o11c; 01.07.2018