Введение
Sandbox для Linux kernel seccomp (сокращение от secure computing) - это средство обеспечения безопасности компьютера в ядре Linux. seccomp позволяет процессу совершать односторонний переход в "безопасное" состояние, в котором он не может совершать никаких системных вызовов, кроме выхода, sigreturn, чтения и записи уже открытых дескрипторов файлов. Если он попытается сделать какие-либо другие системные вызовы, ядро либо просто запишет событие, либо завершит процесс с помощью SIGKILL или SIGSYS. В этом смысле он не виртуализирует ресурсы системы, а полностью изолирует процесс от них. Режим seccomp активируется через системный вызов с использованием аргумента PR SET SECCOMP или (с момента Linux kernel 3.17) через системный вызов. Режим seccomp раньше включался записью в файл /proc/self/seccomp, но этот метод был удален в пользу prctl В некоторых версиях ядра seccomp отключает инструкцию RDTSC x86, которая возвращает количество прошедших циклов процессора с момента включения, используемую для высокоточного синхронизации. seccomp bpf - это расширение seccomp, которое позволяет фильтровать системные вызовы с помощью конфигурируемой политики, реализованной с использованием правил фильтра пакетов Беркли. Он используется OpenSSH (в этом отношении seccomp bpf достигает аналогичной функциональности, но с большей гибкостью и более высокой производительностью, по сравнению со старшим systrace, который, похоже, больше не поддерживается для Linux). Некоторые считают seccomp сопоставимым с OpenBSD pledge и FreeBSD capsicum.
seccomp (short for secure computing) is a computer security facility in the Linux kernel. seccomp allows a process to make a one way transition into a "secure" state where it cannot make any system calls except exit , sigreturn , read and write to already open file descriptors. Should it attempt any other system calls, the kernel will either just log the event or terminate the process with SIGKILL or SIGSYS. In this sense, it does not virtualize the system's resources but isolates the process from them entirely. seccomp mode is enabled via the system call using the PR SET SECCOMP argument, or (since Linux kernel 3.17) via the system call. seccomp mode used to be enabled by writing to a file, /proc/self/seccomp, but this method was removed in favor of prctl In some kernel versions, seccomp disables the RDTSC x86 instruction, which returns the number of elapsed processor cycles since power on, used for high precision timing. seccomp bpf is an extension to seccomp that allows filtering of system calls using a configurable policy implemented using Berkeley Packet Filter rules. It is used by OpenSSH (In this regard seccomp bpf achieves similar functionality, but with more flexibility and higher performance, to the older systrace—which seems to be no longer supported for Linux.) Some consider seccomp comparable to OpenBSD pledge(2) and FreeBSD capsicum(4).
История
seccomp был впервые разработан Андреа Арканджели в январе 2005 года для использования в общественных вычислениях сети и первоначально был предназначен как средство безопасного запуска ненадёжных вычислительных программ. Он был объединен в основной линейке ядра Linux в версии ядра 2.6.12, которая была выпущена 8 марта 2005 года.