The OpenNET Project / Index page

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

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

29.11.2019 10:41

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

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

  1. Главная ссылка к новости (https://github.com/containers/...)
  2. OpenNews: Релиз системы самодостаточных пакетов Flatpak 1.4.0
  3. OpenNews: Linux Foundation представил containerd 1.0, runtime для изолированных контейнеров
  4. OpenNews: Проект Sandstorm переходит в руки сообщества
  5. OpenNews: Выпуск sandboxed-tor-browser, прослойки для изоляции Tor Browser
  6. OpenNews: Выпуск системы изоляции приложений Firejail 0.9.60
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51947-bubblewrap
Ключевые слова: bubblewrap, container
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (14) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Попугай Кеша (?), 14:01, 29/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Еще один, блин )
     
     
  • 2.2, Блиннинг (?), 14:19, 29/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да ещё с комками.
     

  • 1.3, bOOster (ok), 16:27, 29/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Интересно, когда до них дойдет что jails из  freebsd портануть проще.
     
     
  • 2.4, Аноним (4), 16:41, 29/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Гения подвезли
     
  • 2.11, Аноним (11), 15:27, 30/11/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    jails опираются на BSD API (которое в свою очередь расширение POSIX API, а конкретно SYSTEM V), в то время как линукс всё сильнее уходит ( и уносит с собой софт) на свой самобытный и не очень стабильный Linux API. Т.е. портировать-то можно, только это долго, сложно и работать будет чуть иначе.
    В линуксе модули-то по юникс-меркам недавно появились, и то от бздюшных отличаются как гвоздь от зубила.
     

  • 1.5, fgogtfdg (?), 18:09, 29/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Гения она такая ... джал с нее как с козла молка
     
  • 1.6, Аноним (-), 18:09, 29/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ребят, а есть хороший гайд или список примеров типового использования сабжа? (для запуска графических приложений)
     
     
  • 2.8, Аноним (8), 20:20, 29/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Flatpak по дефолту просит лишь необходимые разрешения, а остальное запрещает (изолирует). Но это если манифест приложения нормальный, а не "allow all".
     
     
  • 3.10, Аноним (-), 00:10, 30/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    вопрос был про bubblewrap, а не про flatpak, firejail и прочие (у которых, в большинстве, манифесты как раз таки с кучей белых списков идут)
     
     
  • 4.12, Omnonom (?), 09:23, 02/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это часть флэтпака, предполагается, что её будут использовать исключительно с ним или (пока не реализованной) альтернативной реализацией флэтпака.
    Как пользоваться? Открываешь исходники самого bw, изучаешь как работает api и пишешь свою программу или библиотеку, работающую с этим api. Немного сложнее, чем zlib, но если ты обладаешь достаточной компетенцией, то у тебя всё получится.
     
     
  • 5.14, Аноним (-), 12:42, 03/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >Это часть флэтпака, предполагается, что её будут использовать исключительно с ним

    закусывать надо!

     

  • 1.7, Аноним (-), 18:10, 29/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    оно лучше чем lxc или о другом?
     
     
  • 2.9, Деннис Ритчи (ok), 22:40, 29/11/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Там же в первом предложении основное отличие сказано.
     
  • 2.13, омномном (?), 11:26, 02/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это что-то типа "неудобного" докера для GUI-приложений. Оно может и в консольные приложения, но, как и всё изолированное, работает так себе, если приложение не само в себе, а полагается на разные способы взаимодействия со средой пользователя.

    Используется "производителями" софта гл.обр. для простой демонстрации возможностей своих апликух без необходимости установки различных версий сторонних пакетов в систему. Поэтому некоторые деятели старательно пытаются обойти возведённые ради безопасности, конечно же (а не удобства пользования) барьеры с разной степенью эффективности.

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



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

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