Введение

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 был впервые разработан Андреа Арканджели в январе 2005 года для использования в общественных вычислениях сети и первоначально был предназначен как средство безопасного запуска ненадёжных вычислительных программ. Он был объединен в основной линейке ядра Linux в версии ядра 2.6.12, которая была выпущена 8 марта 2005 года.