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.17Nota
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âmetro | Tipo | Descrição |
|---|---|---|
| operation | unsigned int | SECCOMP_SET_MODE_STRICT, SECCOMP_SET_MODE_FILTER, SECCOMP_GET_ACTION_AVAIL, etc. |
| flags | unsigned int | Flags que modificam `operation` (ex.: SECCOMP_FILTER_FLAG_TSYNC). |
| args | void * | Argumento cujo formato depende de `operation` — tipicamente um `struct sock_fprog *` com o filtro BPF. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | operationunsigned int |
| rsi | argumento 2 | flagsunsigned int |
| rdx | argumento 3 | argsvoid * |
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.