Опубликована новая версия инструментария для организации работы изолированных окружений Bubblewrap 0.11, используемого для ограничения отдельных приложений непривилегированных пользователей. На практике Bubblewrap применяется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений. Для изоляции используются традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Код проекта написан на языке Си и распространяется под лицензией LGPLv2+.
Bubblewrap запускается с правами root (исполняемый файл c suid-флагом) с последующим сбросом привилегий после завершения инициализации и настройки контейнера. Вместо пространств имён идентификаторов пользователя (user namespace), которые по умолчанию отключены в большинстве дистрибутивов, в Bubblewrap задействована suid-реализация некоторых возможностей user namespaces. Дополнительно для исключения всех лишних идентификаторов пользователей и процессов из создаваемого изолированного окружения, могут использоваться режимы CLONE_NEWUSER (user namespace) и CLONE_NEWPID (PID namespace). Для дополнительной защиты программы запускаются в режиме 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 же объединяет в одном исполняемом файле все сопутствующие функции, что усложняет его аудит и поддержание безопасности на должном уровне.
В новом выпуске:
- Предоставлена возможность создания точек монтирования, в которых используется моногослойная файловая система OverlayFS, объединяющая несколько частей других файловых систем. Для управления использованием
OverlayFS предложены новые опции командой строки “–overlay”, “–tmp-overlay”, “–ro-overlay” и “–overlay-src”. - Добавлена опция “–level-prefix” для подстановки в диагностический вывод уровня приоритета записи в стиле syslog, что позволяет использовать для обработки вывода такие утилиты, как “logger” и “systemd-cat”.
- Прекращена поддержка сборочной системы Autotools. Для сборки теперь необходим инструментарий Meson.