The OpenNET Project / Index page

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

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

26.02.2022 14:10

Доступен выпуск инструментария для организации работы изолированных окружений Bubblewrap 0.6, как правило используемый для ограничения отдельных приложений непривилегированных пользователей. На практике 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 же объединяет в одном исполняемом файле все сопутствующие функции, что усложняет его аудит и поддержание безопасности на должном уровне.

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

  • Добавлена поддержка сборочной системы Meson. Поддержка сборки при помощи Autotools пока сохранена, но будет удалена в одном из следующих выпусков.
  • Реализована опция "--add-seccomp" для добавления более чем одной программы seccomp. Добавлено предупреждение о том, что при повторном указании опции "--seccomp" будет применён только последний параметр.
  • Ветка master в git-репозитории переименована в main.
  • Добавлена частичная поддержка спецификации REUSE, унифицирующей процесс указания сведений о лицензиях и авторских правах. Во многие файлы с кодом добавлены заголовки SPDX-License-Identifier. Следование рекомендациям REUSE позволяет упростить автоматическое определение какая лицензия применяется к каким из частей кода приложения.
  • Добавлена проверка значения счётчика аргументов командной строки (argc) и реализован экстренный выход в случае если счётчик равен нулю. Изменение позволяет блокировать проблемы с безопасностью, вызванные некорректной обработкой передаваемых аргументов командной строки, такие как CVE-2021-4034 в Polkit.


  1. Главная ссылка к новости (https://github.com/containers/...)
  2. OpenNews: Релиз системы самодостаточных пакетов Flatpak 1.12.0
  3. OpenNews: Выпуск Bubblewrap 0.5.0, прослойки для создания изолированных окружений
  4. OpenNews: Уязвимость во Flatpak, позволяющая обойти режим изоляции
  5. OpenNews: Релиз систем сборки CMake 3.21 и Meson 0.59
  6. OpenNews: Выпуск системы изоляции приложений Firejail 0.9.62
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/56764-bubblewrap
Ключевые слова: bubblewrap, container
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (12) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 14:25, 26/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Действительно, неймспейсы помноженные на суид это надёжно, тот же сабж неоднократно это подтверждал. Кто-нибудь вообще пользуется? Давайте пользуйтесь, надо находить уязвимости.
     
     
  • 2.2, Anonnnym (?), 14:50, 26/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я пользуюсь - игры в стим не работают и это печалит. Приходится через flatpak пускать, а он свою копию системных либ тащит
     
     
  • 3.4, Аноним (4), 16:13, 26/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Дистрибутивоцентричный Линукс глубоко ущербная парадигма.  
     
  • 3.5, Аноним (5), 16:33, 26/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не проще для проприетарных игрушек отдельного юзверя завести с отдельными иксами?
     
  • 2.11, Аноним (11), 19:39, 28/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > неймспейсы помноженные на суид это надёжно

    Там либо user namespaces, либо лимитированный suid. Опеннет-эксперт неоднократно помноженный на ноль - вот, что действительно ненадежно.

     

  • 1.3, Аноним (4), 16:10, 26/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    С этими флатпаками никогда не поймешь в какие хостовые папки у него есть доступ, а в какие нет. В каждом приложении по разному /tmp может быть у кого-то хостовым у кого-то своим. И так про все папки. Причем если и попытаешься что-то сам настроить со следующим апдейтом все слетит. Короче не нужен этот ваш флатпак думайте по новой. Сделайте лучше как в венде где всё просто работает.  
     
     
  • 2.7, keydon (ok), 06:27, 27/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Он ещё довольно ущербно в других контейнерах работает, что неприятно для сборок использующих флэтпак(тот же хром как пример, причём там скрипт для сборки написан криво - ставит флэтпак даже если он и не нужен)
    И уже натыкался на людей которые ставят пакет через флэтпак и забывают про него, а потом удивляются почему это конфиг не применяется с хвостовой машины. Да, они ССЗБ что не знают инструментов которые используют, но проблему лишней сущности это не отменяет.
    Ну и в целом концепция флэтпака ущербная, позволяет разработчикам разжижать мозги и делать тяп-ляп вместо "подумать и переделать"
    Так что пользы от него пока никакой, а вреда уже слишком много
     
  • 2.9, Аноним (9), 11:01, 27/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Сделайте ему клавишу "Zaipis!"
     

  • 1.6, Kuromi (ok), 00:04, 27/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    "На практике Bubblewrap применяется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений."
    Не только, Gnome Web тоже использует его чтобы вэбкит изолировать.
     
     
  • 2.10, mikhailnov (ok), 03:13, 28/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Сам вебкит это делает
     

  • 1.8, Аноним (8), 09:33, 27/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Bubblewrap запускается с правами root (исполняемый файл c suid-флагом) с последующим сбросом привилегий после завершения инициализации контейнера.

    А в чем тогда разница между пакетами bubblewrap и bubblewrap-suid в Arch? Зачем два варианта?

     
     
  • 2.12, Аноним (11), 20:25, 28/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    bublewrap-suid для hardened ядра, там user namespaces отключены. bubblewrap для всех остальных.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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