После года разработки опубликована новая версия инструментария для организации работы изолированных окружений Bubblewrap 0.9, используемого для ограничения отдельных приложений непривилегированных пользователей. На практике Bubblewrap применяется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений. Код проекта написан на языке Си и распространяется под лицензией LGPLv2+.
Për izolimin përdoren teknologjitë tradicionale të virtualizimit të kontejnerëve në Linux, të bazuara në përdorimin e cgroups, hapësirave të emrave (namespaces), Seccomp dhe SELinux. Për të kryer operacione me privilegje për konfigurimin e kontejnerit, Bubblewrap ekzekutohet me të drejta root (skedari ekzekutiv me shenjën suid), duke i hequr më pas privilegjet pas përfundimit të inicializimit të kontejnerit.
Активация в системе пространств имён идентификаторов пользователя (user namespaces), позволяющих использовать в контейнерах собственный отдельный набор идентификаторов, для работы не требуется, так как по умолчанию не работает во многих дистрибутивах (Bubblewrap позиционируется как ограниченная suid-реализация подмножества возможностей user namespaces — для исключения всех идентификаторов пользователей и процессов из окружения, кроме текущего, используются режимы CLONE_NEWUSER и CLONE_NEWPID). Для дополнительной защиты исполняемые под управлением Bubblewrap программы запускаются в режиме PR_SET_NO_NEW_PRIVS, запрещающем получение новых привилегий, например, при наличии флага setuid.
Izolimi në nivelin e sistemit të skedarëve bëhet përmes krijimit të një hapësire të re të emrave të pikave të montimit (mount namespace) me parazgjedhje, në të cilën krijohet një pjesë e zbrazët e rrënjës duke përdorur tmpfs. Në këtë pjesë, sipas nevojës, lidhen pjesë të FS-së së jashtme në modalitetin „mount —bind“ (për shembull, kur ekzekutohet me opsionin „bwrap —ro-bind /usr /usr“, pjesa /usr kalon nga sistemi kryesor në modalitetin vetëm për lexim). Mundësitë rrjetërore kufizohen në qasjen në ndërfaqen loopback me izolimin e skakereve të rrjetit përmes flamujve CLONE_NEWNET dhe CLONE_NEWUTS.
Ключевым отличием от похожего проекта Firejail, который также использует модель запуска с применением setuid, является то, что в Bubblewrap прослойка для создания контейнеров включает только необходимый минимум возможностей, а все расширенные функции, необходимые для запуска графических приложений, взаимодействия с рабочим столом и фильтрации обращений к Pulseaudio, вынесены на сторону Flatpak и выполняются уже после сброса привилегий. Firejail же объединяет в одном исполняемом файле все сопутствующие функции, что усложняет его аудит и поддержание безопасности на должном уровне.
Në versionin e ri:
- Из пакета с исходными текстами удалены файлы, сгенерированные в Autotools. Для сборки теперь рекомендуется использовать сборочную систему Meson. Опциональная поддержка Autotools пока сохранена, но в будущих выпусках её планируется удалить.
- Добавлена опция «—argv0» для выставления значения нулевого аргумента командной строки (argv[0] — имя исполняемого файла, например «—argv0 /usr/bin/test»).
- Опция «—symlink» теперь срабатывает только когда символическая ссылка уже существует и указывает на нужный целевой файл.
- Документирована опция «—cap-add», применяемая для выставления capability-флагов, например, «CAP_DAC_READ_SEARCH».
- Повышена информативность ошибок, выводимых при сбое монтирования.
- Упрощён процесс создания unit-тестов.
- В примерах использования прекращена поддержка старых версий Python.
- Улучшены операции выделения памяти.
Burimi: opennet.ru
