Phát hành Bubblewrap 0.4.0, một lớp để tạo môi trường biệt lập

Có sẵn новый выпуск инструментария Bọc bong bóng 0.4.0, предназначенного для организации работы изолированных окружений в Linux и функционирующий на уровне приложений непривилегированных пользователей. На практике Bubblewrap используется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений. Код проекта написан на языке Си и phân phối bởi под лицензией LGPLv2+.

Để cách ly, các công nghệ ảo hóa vùng chứa Linux truyền thống được sử dụng, dựa trên việc sử dụng các nhóm, không gian tên, Seccomp và SELinux. Để thực hiện các hoạt động đặc quyền nhằm định cấu hình vùng chứa, Bubblewrap được khởi chạy với quyền root (tệp thực thi có cờ suid) và sau đó đặt lại các đặc quyền sau khi vùng chứa được khởi tạo.

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

Việc cách ly ở cấp hệ thống tệp được thực hiện bằng cách tạo một vùng tên gắn kết mới theo mặc định, trong đó một phân vùng gốc trống được tạo bằng cách sử dụng tmpfs. Nếu cần, các phân vùng FS bên ngoài sẽ được gắn vào phân vùng này ở chế độ “mount —bind” (ví dụ: khi khởi chạy với tùy chọn “bwrap —ro-bind /usr /usr”, phân vùng /usr sẽ được chuyển tiếp từ hệ thống chính ở chế độ chỉ đọc). Khả năng của mạng bị giới hạn trong việc truy cập vào giao diện loopback với cách ly ngăn xếp mạng thông qua cờ CLONE_NEWNET và CLONE_NEWUTS.

Sự khác biệt chính từ một dự án tương tự nhà tù lửa, который также использует модель запуска с применением setuid, является то, что в Bubblewrap прослойка для создания контейнеров включает только необходимый минимум возможностей, а все расширенные функции, необходимые для запуска графических приложений, взаимодействия с рабочим столом и фильтрации обращений к Pulseaudio, вынесены на сторону Flatpak и выполняются уже после сброса привилегий. Firejail же объединяет в одном исполняемом файле все сопутствующие функции, что усложняет его аудит и поддержание безопасности на mức độ phù hợp.

Новый выпуск примечателен реализацией поддержки присоединения существующих пространств имён идентификаторов пользователей (user namespaces) и процессов (pid namespaces). Для управления подключением пространств имён добавлены флаги «—userns», «—userns2» и «—pidns».
Данная возможность не работает в режиме setuid и требует применения отдельного режима, который может работать без получения прав root, но требует активации
user namespaces в системе (по умолчанию отключены в Debian и RHEL/CentOS) и не исключает возможность khai thác có tiềm năng остающихся lỗ hổng для обода ограничений «user namespaces». Из новых возможностей Bubblewrap 0.4 также отмечается возможность сборки с Си-библиотекой musl вместо glibc и поддержка сохранения информации о пространствах имён в файл со статистикой в формате JSON.

Nguồn: opennet.ru

Thêm một lời nhận xét