فری بی ایس ڈی کے لیے plegde اور unveil کی طرح ایک الگ تھلگ طریقہ کار تیار کیا جا رہا ہے۔

Для FreeBSD предложена реализация механизма изоляции приложений, напоминающего развиваемые проектом OpenBSD системные вызовы plegde и unveil. Изоляция в plegde осуществляется через запрет обращения к неиспользуемым в приложении системным вызовам, а в unveil через выборочное открытие доступа только для отдельных файловых путей, с которыми может работать приложение. Для приложения формируется подобие белого списка системных вызовов и файловых путей, а все остальные вызовы и пути запрещаются.

Отличие развиваемого для FreeBSD аналога plegde и unveil сводится к предоставлению дополнительной прослойки, позволяющей изолировать приложения без внесения изменений в их код или при минимальных изменениях. Напомним, что в OpenBSD plegde и unveil нацелены на тесную интеграцию с базовым окружением и применяются через добавление специальных аннотаций в код каждого приложения. Для упрощения организации защиты фильтры позволяют обойтись без детализации на уровне отдельных системных вызовов и манипулировать классами системных вызовов (ввод/вывод, чтение файлов, запись файлов, сокеты, ioctl, sysctl, запуск процессов и т.п.). Функции ограничения доступа могут вызываться в коде приложения по мере выполнения тех или иных действий, например, доступ к сокетам и файлам может закрываться после открытия нужных файлов и установки сетевого соединения.

Автор порта plegde и unveil для FreeBSD намерен предоставить возможность изоляции произвольных приложений, для чего предложена утилита curtain, позволяющая применять к приложениям правила, определённые в отдельном файле. Предложенная конфигурация включает файл с базовыми настройками, определяющими классы системных вызовов и типовые файловые пути, специфичные для определённых применений (работа со звуком, сетевое взаимодействие, вывод в лог и т.п.), а также файл с правилами доступа конкретных приложений.

Утилита curtain может применяться для изоляции большинства немодифицированных утилит, серверных процессов, графических приложений и даже целых сеансов рабочего стола. Поддерживается совместное использование curtain с механизмами изоляции, предоставляемыми подсистемами Jail и Capsicum. Также возможна организация вложенной изоляции, когда запускаемые приложения наследуют выставленные родительскому приложению правила, дополняя их отдельными ограничениями. Некоторые операции ядра (средства отладки, POSIX/SysV IPC, PTYs) дополнительно защищаются при помощи механизма барьеров, не позволяющего обращаться к объектам ядра, созданным не текущим или родительским процессом.

Процесс может самостоятельно настроить собственную изоляцию при помощи вызова curtainctl или используя предоставляемые библиотекой libcurtain функции plegde() и unveil(), аналогичные подобным функциям из OpenBSD. Для отслеживания блокировок в процессе работы приложения предусмотрен sysctl ‘security.curtain.log_level’. Доступ к протоколам X11 и Wayland включается отдельно через указание при запуске curtain опций «-X»/»-Y» и «-W», но поддержка графических приложений ещё не достаточно стабилизирована и имеет ряд нерешённых проблем (проблемы в основном проявляются при использовании X11, а поддержка Wayland реализована значительно лучше). Пользователи могут добавить дополнительные ограничения через создание локальных файлов с правилами (~/.curtain.conf). Например, для разрешения записи из Firfox только в каталог ~/Downloads/ можно добавить секцию «[firefox]» с правилом «~/Downloads/ : rw +».

Реализация включает в себя модуль ядра mac_curtain для мандатного контроля доступа (MAC, Mandatory Access Control), набор патчей для ядра FreeBSD с реализацией необходимых обработчиков и фильтров, библиотеку libcurtain для использования функций plegde и unveil в приложениях, утилиту curtain, примеры файлов конфигурации, набор тестов и патчи для некоторых программ в пространстве пользователя (например, для использования $TMPDIR с целью унификации работы с временными файлами). По возможности автор намерен свести к минимуму число изменений, для которых требуется применение патчей к ядру и приложениям.

ماخذ: opennet.ru

نیا تبصرہ شامل کریں