Стало известно, что была предложена реализация из механизм изоляции приложений для FreeBSD, что напоминает системные вызовы fold и раскрыть, разработанные в рамках проекта OpenBSD.
Изоляция в плегде осуществляется путем запрета доступа к системным вызовам, которые не используются приложением, и раскрытия путем выборочного открытия доступа только к определенным путям к файлам, с которыми приложение может работать. Для приложения формируется своего рода белый список системных вызовов и путей к файлам, а все остальные вызовы и пути запрещены.
Разница между сложенным и раскрытым, разработан для FreeBSD, это сводится к обеспечению дополнительного слоя что позволяет изолировать приложения без изменений кода или с минимальными изменениями. Помните, что в OpenBSD plegde и unlock нацелены на тесную интеграцию с базовой средой и реализуются путем добавления специальных аннотаций в код каждого приложения.
Для упрощения организации защиты фильтры позволяют избежать детализации на уровне отдельных системных вызовов и манипулировать классами системных вызовов (ввод/вывод, чтение файла, запись файла, сокеты, ioctl, sysctl, запуск процессов и т.д.) . Функции ограничения доступа могут вызываться в коде приложения по мере выполнения определенных действий, например, доступ к сокетам и файлам может быть закрыт после открытия нужных файлов и установления сетевого соединения.
Автор порта сгиба и раскрытия для FreeBSD. предназначен для предоставления возможности изолировать произвольные приложения, для чего предлагается утилита-шторка, позволяющая применять к приложениям правила, определенные в отдельном файле. Предлагаемая конфигурация включает в себя файл с базовыми настройками, определяющими классы системных вызовов и типовые пути к файлам, характерные для конкретных приложений (работа со звуком, сетями, логированием и т. д.), а также файл с правилами доступа для конкретных приложений.
Утилита занавеса может использоваться для изоляции большинства утилит, серверных процессов, графических приложений и даже целых сеансов рабочего стола, которые не были изменены. Поддерживается совместное использование занавеса с механизмами изоляции, предоставляемыми подсистемами Jail и Capsicum.
также можно организовать вложенную изоляцию, при запуске приложения наследуют правила, установленные родительским приложением, дополняя их отдельными ограничениями. Некоторые операции ядра (инструменты отладки, POSIX/SysV IPC, PTY) дополнительно защищены барьерным механизмом, который предотвращает доступ к объектам ядра, созданным процессами, отличными от текущего или родительского процесса.
Процесс может настроить свою собственную изоляцию, вызвав занавесctl или с помощью функций plegde() и раскрыть(), предоставляемых библиотекой libcurtain, аналогично OpenBSD. sysctl security.curtain.log_level предназначен для отслеживания блокировок во время работы приложения.
Доступ к протоколам X11 и Wayland включается отдельно указанием опций "-X"/"-Y" и "-W" при запуске шторки, но поддержка графических приложений еще недостаточно стабилизирована и имеет ряд нерешенных вопросов ( проблемы появляются в основном при использовании X11, да и поддержка Wayland гораздо лучше). Пользователи могут добавлять дополнительные ограничения, создавая локальные файлы правил (~/.curtain.conf). Например,
Реализация включает в себя модуль ядра mac_curtain для обязательного контроля доступа (MAC), набор патчей для ядра FreeBSD с реализацией необходимых драйверов и фильтров, библиотеку libcurtain для использования plegde и раскрытых функций в приложениях, служебную шторку, настройку шоу файлы, набор тестов и патчи для некоторых программ пользовательского пространства (например, чтобы использовать $TMPDIR для унификации работы с временными файлами). По возможности автор старается минимизировать количество изменений, требующих патчинга ядра и приложений.
В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.