Voltar à lista
Linux x86_64Segurança#317

seccomp

Restringe o conjunto de syscalls que o processo chamador (e seus descendentes) pode executar.

Descrição

Instala um filtro BPF que o kernel avalia antes de despachar cada syscall, podendo permitir, negar (com errno ou SIGSYS) ou registrar chamadas. É a base do sandboxing usado por navegadores (Chrome, Firefox), runtimes de container (Docker/runc) e systemd (`SystemCallFilter=`).

Header: linux/seccomp.hman 2Desde o kernel 3.17

Nota

Uma vez instalado um filtro, ele não pode ser removido — apenas mais filtros (mais restritivos) podem ser empilhados sobre ele, por design.

Assinatura

int seccomp(unsigned int operation, unsigned int flags, void * args);

Parâmetros

ParâmetroTipoDescrição
operationunsigned intSECCOMP_SET_MODE_STRICT, SECCOMP_SET_MODE_FILTER, SECCOMP_GET_ACTION_AVAIL, etc.
flagsunsigned intFlags que modificam `operation` (ex.: SECCOMP_FILTER_FLAG_TSYNC).
argsvoid *Argumento cujo formato depende de `operation` — tipicamente um `struct sock_fprog *` com o filtro BPF.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1operationunsigned int
rsiargumento 2flagsunsigned int
rdxargumento 3argsvoid *

Valor de retorno

0 (ou um valor específico da operação) em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EACCES(13)
Permissão negada.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.
ESRCH(3)
Processo inexistente.

Relacionadas