The OpenNET Project / Index page

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

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

28.02.2023 09:16

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

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

  • Добавлена опция "--disable-userns" отключающая создание в sandbox-окружении своего вложенного пространства идентификаторов пользователей (user namespace).
  • Добавлена опция "--assert-userns-disabled" для проверки, что при использовании опции " --disable-userns" задействовано существующее пространство идентификаторов пользователей.
  • Повышена информативность сообщений об ошибках, связанных с отключением в ядре настроек CONFIG_SECCOMP и CONFIG_SECCOMP_FILTER.


  1. Главная ссылка к новости (https://github.com/containers/...)
  2. OpenNews: Релиз системы самодостаточных пакетов Flatpak 1.14.0
  3. OpenNews: Проект Celestial развивает сборку Ubuntu с Flatpak вместо Snap
  4. OpenNews: Выпуск Bubblewrap 0.6, прослойки для создания изолированных окружений
  5. OpenNews: Дистрибутив Chimera Linux, сочетающий ядро Linux с окружением FreeBSD
  6. OpenNews: Выпуск системы изоляции приложений Firejail 0.9.72
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58721-bubblewrap
Ключевые слова: bubblewrap, container
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (56) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 09:22, 28/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    флатпаки и прочее явно не панацея от поломанных зависимостей
     
     
  • 2.9, SkylerX (ok), 09:52, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Случай, когда во flatpak зависимости ломаются приведешь? Или ты так, набросить?
     
     
  • 3.17, Аноним (17), 10:21, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Когда тебе надо откатится на старую версию софта во флатпаке. Для это надо зайти в лог коммитов и откатится на один из коммитов, но выясняется что он хранит только последние 10 коммитов. А если ты даже знаешь номер старого коммита то ты откатится на него не можешь.  
     
     
  • 4.20, Аноним (20), 10:37, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Но ведь это уже не про зависимости, а плохую особенность флатпака
     
     
  • 5.26, Аноним (17), 11:43, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если ты от старой версии зависишь, то проблема сразу становится про зависимости)
     
  • 4.43, Аноним (43), 19:12, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пользуйся Nix, там такой проблемы нет в принципе.
     
  • 4.45, BrainFucker (ok), 20:48, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Когда тебе надо откатится на старую версию софта во флатпаке.

    Это что, в этих "супер-пупер" пакетных менеджерах по прежнему нельзя установить параллельно разные версии одного и того же софта? Мда, а дифирамбов-то этим блоатваре сколько было...

     
  • 3.30, AlexYeCy_not_logged (?), 12:17, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Случай, когда во flatpak зависимости ломаются приведешь?

    А этот твой flatpak он что, заговорённый?
    Так-то там тоже зависимости есть. И от принципа «всё своё ношу с собой» разрабы flatpak собираются отказываться уж не первый год как: оказывается, если таких пакетов в системе не два — три, то вопрос экономии дискового пространства становится весьма актуальным. Одно дело, когда две или три программулины весом до ста метров занимают по полтора — два гига (а то и больше) каждая, другое дело, когда таких программулин надо установить штук 30, да ещё предусмотреть место для бэкапа корня. И вот чтобы с этим бороться, собираются применять (не начали ещё?) разделяемые среды. Ну т.е объединить все возможные минусы от смешения нескольких подходов, как нынче модно.

     
     
  • 4.59, Shevchuk (ok), 19:15, 02/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы про это code Freedesktop Platform org freedesktop Pla... большой текст свёрнут, показать
     
  • 2.16, Аноним (16), 10:13, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Они же зависят только от общего для всех контейнеров bundle. И ABI не меняется какое-то время. Даже между дистрибутивами.

    Почем панацея и что тогда панацея?

     
  • 2.21, Прохожий (??), 10:42, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А зависимости зло-))) Не вижу проблем в составе дистрибутива софта иметь все необходимые ему компоненты, место на винте, давно не актуальный параметр
     
     
  • 3.31, AlexYeCy_not_logged (?), 12:24, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >место на винте, давно не актуальный параметр

    Если оно терабайтами будет жраться, то это станет проблемой для очень и очень многих. а уж если речь не про десктоп, и не про сервер, то и подавно. Нужны бэкапы — добавляй к проблемам множитель.
    К тому же, распухший / это не только сожранное место на дисках. Вот у меня раньше система была на разделе в  30 гигов. Раньше — это ещё лет 5 назад. Потом 50, теперь 100. И ладно место, но оно теперь побайтово копируется на nas и обратно в разы дольше. И да, три flatpak-а (которые содержат софт, раньше вполне себе устанавливающийся из системных реп) тут тоже сыграли роль, причём заметную. Прибавила ли моя система в функционале, удобстве и прочем в связи с ростом занимаемого пространства? Нет.

     
     
  • 4.42, Аноним (43), 19:12, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Расскажи, что там у тебя в системе на 30, 50, и даже 100 гигов? Прон заныканный от мамки в /var/lib/cache? Не считая полтора терабайта пользовательских данных, система с кучей внутренних сервисов и системой сборки занимает 14 гигов. Декстоп с GNOME — 8,5, включая снапшоты. Как ты на ста гигах поместиться не можешь — загадка века, но флатпак тут явно не при чём.
     
     
  • 5.44, Аноним (44), 19:49, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Думаю, что у него там 100 Гб логов насобиралось
     
  • 5.48, AlexYeCu_not_logged (?), 21:30, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Расскажи, что там у тебя в системе на 30, 50, и даже 100 гигов?

    /usr 25+ Gib.
    /var/lib/flatpak 5.5 GiB. 3 (три!) программулины. И почти 20% от прочего софта со всеми потрохами.
    Весь остальной /var ­около 2 GiB.
    /opt столько же.
    Хомяк и тому подобное на других разделах.

    Итого занято чуть больше полтинника. Плюс задел под обновление.

    Ты вообще в курсе, как обновление с релиза на релиз происходит? Не, так-то можно и /opt куда-нибудь перемонтировать, и system-upgrade, и flatpak-помойку. Но это, знаешь ли, напрягает.

    >Прон заныканный от мамки в /var/lib/cache?

    Деточка, не надо проецировать на других. Если даже дяде оно и понадобится, у дяди быстрый интернет. И даже если пожилая мама приедет к дяде в гости, она один шут не сможет найти ни фильмы твоего любимого жанра, ни что-либо ещё, где бы это что-то ни находилось.  Дядя ей инструкции по очистке смс с кнопочного телефона регулярно пишет и телепрограммы настраивает.

    >система с кучей внутренних сервисов и системой сборки занимает 14 гигов

    Твоя система, дитя. Твоя.

     
     
  • 6.49, AlexYeCu_not_logged (?), 21:33, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ах да, ещё /share увесистый. Ну и swapfile динамический может разжиреть.
     
  • 6.66, Аноним (66), 22:45, 03/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Для сравнения другой пример flatpak list --app 124 wc -l 124 flatpak list... большой текст свёрнут, показать
     
  • 3.50, Тот_Самый_Анонимус_ (?), 22:17, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не видь. Это не отменяет твоей слепоты, а не правоты.
     
  • 3.65, Аноним (66), 22:07, 03/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Проблема не только в занимаемом месте на накопителе.

    Ещё - в потреблении оперативной памяти, растущем с каждой запущенной программой, слинкованной со своими "неповторимыми" версиями общих зависимостей.

    А самая большая проблема кроется в актуальности (обнаруженных уязвимостей для) зависимостей, исключить которую можно только своевременным, централизованным их обновлением.

     

  • 1.2, Аноним (2), 09:25, 28/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    годная вещь
     
     
  • 2.3, Аноним (3), 09:27, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    поясните я не совсем понял зачем оно
     
     
  • 3.10, SkylerX (ok), 09:55, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чтобы разработчику голову не забивать наборами библиотек дистрибутивов, которых миллион. Если работает флатпак значит 99.9% шанс, что будет работать содержимое flathub
     
     
  • 4.11, SkylerX (ok), 09:58, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ну и приятные плюшки для безопасности и стабильности за счет изоляции от системы
     
  • 4.13, Аноним (13), 10:00, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты имел в виду через жп работает и не возможно пользоваться? Большинство пользователей после этого удаляют линукс.
     
     
  • 5.18, Аноним (17), 10:22, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В оффтопе и маке софт итак распространяется правильно им прослойки и контейнеры не нужны.  
     
     
  • 6.19, Бывалый смузихлёб (?), 10:36, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Насильно-"правильно". Просто отрубают то что не подходит - вот и всё.
    Либо ставишь потом то что правильно, либо - сидишь без ПО
    А ведь тот же новый  XCode  у яблока - это порядка 7 Гб установочника, который, не дай Боги, хотя бы единственную проблему словит в ходе скачивания - тогда всё заново
     
     
  • 7.24, Аноним (16), 11:21, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но вы же всегда можете скачать исходный код и скомпилировать. Исходный код свободного ПО (и даже не совсем свободного) у вас никто не отберет.
    Более того можете взять LFS и сидеть компилировать до посинения.
     
     
  • 8.37, Аноним (37), 16:26, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Мы можем Но выше написали про яблочников ... текст свёрнут, показать
     
     
  • 9.47, Аноним (47), 21:12, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Яблочники сделали правильно и хорошо LFS и Линукс сделали всё неправильно и пло... текст свёрнут, показать
     
  • 8.56, Бывалый смузихлёб (?), 17:55, 01/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Как бы да, но у XCode нет свободного ПО Слава Богам, что есть Опенкор, позволяющ... текст свёрнут, показать
     
  • 7.27, Аноним (17), 11:45, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Т.е. XCode должен зависеть от 6 гигов системных библиотек и весить 1 гиг? Но зачем?
     
     
  • 8.38, Бывалый смузихлёб (?), 16:27, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ууу, пацан, ты ещё многого не знаешь Вот обновляются, например, шланг или гну... текст свёрнут, показать
     
     
  • 9.46, Аноним (47), 21:11, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так всё что ты описал это правильно и надёжно Так и должно быть Или что правил... большой текст свёрнут, показать
     
     
  • 10.55, Бывалый смузихлёб (?), 16:21, 01/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Неправильно, когда какое-нибудь обновление свифта с 5 2 на 5 4 подразумевает обн... текст свёрнут, показать
     
  • 6.32, AlexYeCy_not_logged (?), 12:26, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >В оффтопе и маке софт итак распространяется правильно им прослойки и контейнеры не нужны.  

    В гробу я видал такую «правильность».

     
  • 4.22, Самый умный из вас (?), 11:14, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Bubblewrap != flatpak
     
  • 4.35, YetAnotherOnanym (ok), 15:07, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это всегда была забота мэнтейнера пакета в конкретном дистрибутиве.
     
  • 3.36, Аноним (36), 15:15, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > зачем оно

    никто точно не знает

     

  • 1.23, Самый умный из вас (?), 11:17, 28/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Запускать вложенный баблврап из уже созданного баблврап-окружения научились?
     
     
  • 2.28, Аноним (13), 11:51, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Там это, вложенный unshare конечно работает, но совсем не так, как хотелось бы пользователю. Поэтому не понятно, чего ты вообще хочешь от него.
     
     
  • 3.34, Самый умный из вас (?), 14:25, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Nixos-specific
     
     
  • 4.63, Аноним (66), 21:45, 03/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В NixOS вообще нет изоляции приложений. А вот используй они bwrap (--bind) для создания окружения вместо кучи симлинок, была бы и изоляция процессов, и порядок в ФС, и патчей сборки стало бы меньше. Но не шмогла.
     

  • 1.29, Аноним (29), 12:09, 28/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >Для выполнения привилегированных операций по настройке контейнера Bubblewrap запускается с правами root (исполняемый файл c suid-флагом) с последующим сбросом привилегий после завершения инициализации контейнера.

    И чем это лучше, чем firejail?

     
     
  • 2.33, Аноним (33), 14:07, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    firejail - это блоатварь, а как и в любой другой блоатвари, в firejail неоднократно находили уязвимости. Да такие, что без fairjail было бы безопаснее, чем с ним. Такой вот парадокс. Ну а сабж тем временем дает истинно минимальный функционал, основанный исключительно на неймспейсах.
     
     
  • 3.39, Аноним (39), 16:53, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А уязвимости эти эксплуатирются удалено али как?
     
  • 3.41, Аноним (29), 18:43, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >в firejail неоднократно находили уязвимости

    Срочно на раст переписать надо, не иначе!

     
     
  • 4.51, Аноним (51), 22:29, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    думаешь загасить одни уязвимости другими?!
     
  • 3.52, Вы забыли заполнить поле Name (?), 23:17, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >  в firejail неоднократно находили уязвимости.

    Уязвимости в bubblewrap https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=bubblewrap - это, конечно, другое.

     
     
  • 4.54, Аноним (33), 06:37, 01/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    способов атаковать firejail на порядки больше, чем сабж. Просто потому, что сабж -- это просто прослойка над linux namespaces (читай: unshare(2) заэкспортировали в виде шелл-скриптуемого бинаря). firejail тем временем пытается быть решением под ключ, и его кривая реализация распространяется много дальше неймспейсов. Поэтому что в прошлом, что в будущем - firejail всегда будет давать заметно большее кол-во CVE.
     
     
  • 5.60, Вы забыли заполнить поле Name (?), 21:40, 02/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > способов атаковать firejail на порядки больше, чем сабж. Просто потому, что сабж
    > -- это просто прослойка над linux namespaces (читай: unshare(2) заэкспортировали в
    > виде шелл-скриптуемого бинаря). firejail тем временем пытается быть решением под ключ,
    > и его кривая реализация распространяется много дальше неймспейсов. Поэтому что в
    > прошлом, что в будущем - firejail всегда будет давать заметно большее
    > кол-во CVE.

    firejail решает задачу изоляции для любого бинарника, это может быть консольная утилита или графическое приложение, не важно как я его установил себе: пакетом или просто скачал бинарь. К тому же у firejail поддерживает профили для большинства приложений из коробки. Как подобного добиться с bubblewrap? Использовать flatpack? Но это навязывание способа установки софта и соответствующей инфраструктуры откуда эти пакеты брать.  

     
  • 2.53, Вы забыли заполнить поле Name (?), 23:18, 28/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > И чем это лучше, чем firejail?

    Это проблема курицы и яйца. Чтобы настроить контейнер нужны привилегии. Либо suid, либо как в докере.

     
  • 2.62, Аноним (66), 21:26, 03/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В твоей цитате из новости лишь малая часть правды.

    Ядро собранное с включенным CONFIG_USER_NS_UNPRIVILEGED (например, штатные ядра в Арче, кроме linux-hardened) позволяет поставлять bwrap без suid бита (например, как в штатном пакете bubblewrap в Арче) и, следовательно, запускать с привилегиями обычного пользователя. Firejail стартует только под рутом (SUID) или придётся выкинуть из него все фичи, вроде тонкой настройки сети, без которых он превратится в перегруженную версию bwrap'а.

     

  • 1.40, Аноним (40), 18:15, 28/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Network namespaces будут?
     
     
  • 2.57, Аноним (33), 07:29, 02/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Они там изначально. Дополнительные настройки реализуются в другом месте, см. passt(1).
     
     
  • 3.61, Вы забыли заполнить поле Name (?), 21:41, 02/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Они там изначально. Дополнительные настройки реализуются в другом месте, см. passt(1).

    Ну вот чуть влево вправо все реализуется отдельно. Зачем тогда сравнение с firejail?

     
     
  • 4.64, Аноним (66), 21:48, 03/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это называется Unix-way. Полагаю, сравнение демонстрирует одно из достоинств Bubblewrap - модульность.
     
     
  • 5.67, Вы забыли заполнить поле Name (?), 16:14, 04/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Это называется Unix-way. Полагаю, сравнение демонстрирует одно из достоинств Bubblewrap
    > - модульность.

    Суть в том, что по функционалу сам по себе он умеет сильно меньше, чем firejail. Этот как сравнивать grep с vim и говорить, что в первом меньше уязвимостей.

     

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



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

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