Пускането на Bubblewrap 0.6, слой за създаване на изолирани среди.

Достъпен е новият инструментариум за организация на работа в изолирани среди Bubblewrap 0.6, който обикновено се използва за ограничаване на отделни приложения на непривилегировани потребители. На практика Bubblewrap се прилага от проекта Flatpak като прослойка за изолация на приложения, стартирани от пакети. Кодът на проекта е написан на езика C и се разпространява под лиценза LGPLv2+.

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

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

Изолацията на ниво файлова система се извършва чрез създаване по подразбиране на ново пространство на имена на точки на монтиране (mount namespace), в което с помощта на tmpfs се създава празен коренов раздел. В този раздел при необходимост се прикрепят раздели от външна файлова система в режим „mount —bind“ (например, при стартиране с опция „bwrap —ro-bind /usr /usr“, разделът /usr се прехвърля от основната система в режим само за четене). Мрежовите възможности се ограничават до достъпа до loopback интерфейса с изолация на мрежовия стек чрез флаговете CLONE_NEWNET и CLONE_NEWUTS.

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

В новото издание:

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

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster