Дэвид Драйсдейл (David Drysdale) из компании Google опубликовал в списке рассылки разработчиков ядра Linux набор патчей с реализацией фреймворка Capsicum, предоставляющего механизмы для изолированного выполнения приложений и ограничения использования приложениями определённых функций. Патчи подготовлены для ядра Linux 3.15. Для управления предлагается два новых системных вызова cap_rights_limit и cap_rights_get. Система изначально разработана для проекта FreeBSD, включена в состав базовой системы начиная с выпуска FreeBSD 9 и расширена в ветке FreeBSD 10. Поддержка режима изоляции, основанного на использовании Capsicum, интегрирована в OpenSSH 6.5.

Capsicum расширяет POSIX API и предоставляет несколько новых системных примитивов, нацеленных на поддержку модели безопасности через управление возможностями объектов ("object-capability") для Unix-систем. Capsicum нацелен на дополнение традиционного централизованного мандатного контроля доступа средствами для защиты отдельных приложений и активируется на стороне самого приложения. Используя Capsicum, приложение можно запустить в режиме повышенной изоляции (sandbox), при котором программа сможет выполнять только заведомо разрешённые штатные действия.

Capsicum вводит в обиход новый класс файловых дескрипторов - capability, который предоставляет ограниченный набор прав, ассоциированных с ним. Попытки выполнить действия с дескриптором данного типа, не разрешённые заданными правами, отклоняются с выводом ошибки ENOTCAPABLE. Новые полномочия могут определяться только иерархически, как подмножество уже заданных прав, привязанных к существующему capability-дескриптору. Предоставляется также специальный режим "capability", блокирующий обращение ко всем системным вызовам из которых возможен доступ к глобальному пространству имён.

Комбинируя эти две возможности, использующее Capsicum приложение может эффективно изолировать себя в sandbox, определив права доступа для необходимых в работе файлов и сокетов, закрыв все остальные файловые дескрипторы и активировав режим capability, который не позволит открыть не подпадающие под созданные правила новые файловые дескрипторы.

Источник: http://www.opennet.ru/opennews/art.shtml?num=40110