發布 Bubblewrap 0.4.0,用於創建沙盒環境的層

可用的 новый выпуск инструментария 氣泡膜0.4.0, предназначенного для организации работы изолированных окружений в Linux и функционирующий на уровне приложений непривилегированных пользователей. На практике Bubblewrap используется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений. Код проекта написан на языке Си и 分發者 под лицензией LGPLv2+.

為了實現隔離,使用傳統的 Linux 容器虛擬化技術,基於 cgroup、命名空間、Seccomp 和 SELinux。 為了執行特權操作來設定容器,Bubblewrap 會以 root 權限啟動(帶有 suid 標誌的可執行檔),然後在容器初始化後重設特權。

Активация в системе пространств имён идентификаторов пользователя (user namespaces), позволяющих использовать в контейнерах собственный отдельный набор идентификаторов, для работы не требуется, так как по умолчанию не работает во многих дистрибутивах (Bubblewrap позиционируется как ограниченная suid-реализация подмножества возможностей user namespaces — для исключения всех идентификаторов пользователей и процессов из окружения, кроме текущего, используются режимы CLONE_NEWUSER и CLONE_NEWPID). Для дополнительной защиты исполняемые под управлением
Bubblewrap программы запускаются в режиме PR_SET_NO_NEW_PRIVS, запрещающем получение новых привилегий, например, при наличии флага setuid.

檔案系統層級的隔離是透過預設建立一個新的掛載命名空間來實現的,其中使用 tmpfs 建立一個空的根分割區。 如有必要,外部 FS 分區會以「mount —bind」模式附加到此分區(例如,當使用「bwrap —ro-bind /usr /usr」選項啟動時,/usr 分區將從主系統轉送)處於只讀模式)。 網路功能僅限於透過 CLONE_NEWNET 和 CLONE_NEWUTS 標誌存取具有網路堆疊隔離的環回介面。

與類似項目的主要區別 火獄, который также использует модель запуска с применением setuid, является то, что в Bubblewrap прослойка для создания контейнеров включает только необходимый минимум возможностей, а все расширенные функции, необходимые для запуска графических приложений, взаимодействия с рабочим столом и фильтрации обращений к Pulseaudio, вынесены на сторону Flatpak и выполняются уже после сброса привилегий. Firejail же объединяет в одном исполняемом файле все сопутствующие функции, что усложняет его аудит и поддержание безопасности на должном уровне.

Новый выпуск примечателен реализацией поддержки присоединения существующих пространств имён идентификаторов пользователей (user namespaces) и процессов (pid namespaces). Для управления подключением пространств имён добавлены флаги «—userns», «—userns2» и «—pidns».
Данная возможность не работает в режиме setuid и требует применения отдельного режима, который может работать без получения прав root, но требует активации
user namespaces в системе (по умолчанию отключены в Debian и RHEL/CentOS) и не исключает возможность 手術 潛在地 остающихся 漏洞 для обода ограничений «user namespaces». Из новых возможностей Bubblewrap 0.4 также отмечается возможность сборки с Си-библиотекой musl вместо glibc и поддержка сохранения информации о пространствах имён в файл со статистикой в формате JSON.

來源: opennet.ru

添加評論