The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск Bubblewrap 0.9, прослойки для создания изолированных окружений

27.03.2024 09:27

После года разработки опубликована новая версия инструментария для организации работы изолированных окружений Bubblewrap 0.9, используемого для ограничения отдельных приложений непривилегированных пользователей. На практике Bubblewrap применяется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений. Код проекта написан на языке Си и распространяется под лицензией LGPLv2+.

Для изоляции используются традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Для выполнения привилегированных операций по настройке контейнера Bubblewrap запускается с правами root (исполняемый файл c suid-флагом) с последующим сбросом привилегий после завершения инициализации контейнера.

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

Изоляция на уровне файловой системы производится через создание по умолчанию нового пространства имён точек монтирования (mount namespace), в котором при помощи tmpfs создаётся пустой корневой раздел. В данный раздел при необходимости прикрепляются разделы внешней ФС в режиме "mount --bind" (например, при запуске c опцией "bwrap --ro-bind /usr /usr" раздел /usr пробрасывается из основной системы в режиме только для чтения). Сетевые возможности ограничиваются доступом к loopback-интерфейсу с изоляцией сетевого стека через флаги CLONE_NEWNET и CLONE_NEWUTS.

Ключевым отличием от похожего проекта Firejail, который также использует модель запуска с применением setuid, является то, что в Bubblewrap прослойка для создания контейнеров включает только необходимый минимум возможностей, а все расширенные функции, необходимые для запуска графических приложений, взаимодействия с рабочим столом и фильтрации обращений к Pulseaudio, вынесены на сторону Flatpak и выполняются уже после сброса привилегий. Firejail же объединяет в одном исполняемом файле все сопутствующие функции, что усложняет его аудит и поддержание безопасности на должном уровне.

В новом выпуске:

  • Из пакета с исходными текстами удалены файлы, сгенерированные в Autotools. Для сборки теперь рекомендуется использовать сборочную систему Meson. Опциональная поддержка Autotools пока сохранена, но в будущих выпусках её планируется удалить.
  • Добавлена опция "--argv0" для выставления значения нулевого аргумента командной строки (argv[0] - имя исполняемого файла, например "--argv0 /usr/bin/test").
  • Опция "--symlink" теперь срабатывает только когда символическая ссылка уже существует и указывает на нужный целевой файл.
  • Документирована опция "--cap-add", применяемая для выставления capability-флагов, например, "CAP_DAC_READ_SEARCH".
  • Повышена информативность ошибок, выводимых при сбое монтирования.
  • Упрощён процесс создания unit-тестов.
  • В примерах использования прекращена поддержка старых версий Python.
  • Улучшены операции выделения памяти.


  1. Главная ссылка к новости (https://github.com/containers/...)
  2. OpenNews: Выпуск Bubblewrap 0.8, прослойки для создания изолированных окружений
  3. OpenNews: Mozilla начинает внедрение технологии изоляции библиотек RLBox
  4. OpenNews: Проект по портированию механизма изоляции pledge для Linux
  5. OpenNews: Выпуск системы изоляции приложений Firejail 0.9.72
  6. OpenNews: Опубликован secimport 0.8 для sandbox-изоляции отдельных Python-модулей
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60857-bubblewrap
Ключевые слова: bubblewrap, container
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (6) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, anonymous (??), 12:16, 27/03/2024 [ответить]  
  • –1 +/
    Прослойка для создания прослоек погоняет прослойками для прослаивания слоёв.
     
     
  • 2.4, Аноним (4), 14:43, 27/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Живём в эпоху виртуализации.
     
     
  • 3.6, Аноним (6), 16:40, 27/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это, как раз, не виртуализация, а ядерная изоляция.
     

  • 1.5, Аноним (5), 16:27, 27/03/2024 [ответить]  
  • –1 +/
    Ясно. В общем, Firejail лучше ибо фичастее.
     
  • 1.7, Аноним (6), 16:45, 27/03/2024 [ответить]  
  • +1 +/
    А поддержки overlayfs (https://github.com/containers/bubblewrap/pull/547) как не было, так и нет. Печально.
     
  • 1.8, Kuromi (ok), 21:34, 27/03/2024 [ответить]  
  • +/
    Gnome Web (Epiphany) тоже все процессы в сабж заворачивает. Мало кто еще.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру