Bubblewrap 0.12

good-penguin.png

Опубликована новая версия инструментария для организации работы изолированных окружений Bubblewrap 0.12, используемого для ограничения отдельных приложений непривилегированных пользователей. На практике Bubblewrap применяется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений. Для изоляции используются традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Код проекта написан на языке Си и распространяется под лицензией LGPLv2.1+.

Изоляция на уровне файловой системы производится через создание по умолчанию нового пространства имён точек монтирования (mount namespace), в котором при помощи tmpfs создаётся пустой корневой раздел. В данный раздел при необходимости прикрепляются разделы внешней ФС в режиме mount --bind (например, при запуске c опцией bwrap --ro-bind /usr /usr раздел /usr пробрасывается из основной системы в режиме только для чтения). Сетевые возможности ограничиваются доступом к loopback-интерфейсу с изоляцией сетевого стека через флаги CLONE_NEWNET и CLONE_NEWUTS.

Для исключения всех лишних идентификаторов пользователей и процессов из создаваемого изолированного окружения могут использоваться режимы CLONE_NEWUSER (user namespace) и CLONE_NEWPID (PID namespace), а для запрета получения новых привилегий применяется режим PR_SET_NO_NEW_PRIVS. Для получения необходимых привилегий используется «user namespace».

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

  • Лицензия на код изменена с LGPL 2.0+ на LGPL 2.1+.
  • Прекращена поддержка сборки в форме исполняемого файла, получающего дополнительные привилегии при помощи флага suid root. Наличие в системе поддержки «user namespace» теперь обязательно. В качестве причины называется трудоёмкость сопровождения варианта с флагом suid на фоне повсеместной поддержки «user namespace» в дистрибутивах.
  • Добавлена опция --not-a-security-boundary, при выставлении которой некоторые сбои при настройке изолированного sandbox-окружения, такие как перемонтирование подраздела, не приводят к аварийному завершению.
  • Добавлена сборочная опция assume_kernel, отключающая обеспечение обратной совместимости с ядрами Linux, более старыми, чем указанная версия. Например, указание версий 5.6.0+ приведёт к исключению альтернативной реализации функциональности openat2(RESOLVE_IN_ROOT).

Дополнение 1: В версии Bubblewrap 0.12 устранена уязвимость (CVE не назначен), позволяющая через манипуляцию с символическими ссылками во время настройки контейнера добиться записи в область файловой системы вне изолированного окружения. Проблема может быть эксплуатирована при установке flatpak-пакета, подготовленного атакующим.

Дополнение 2: Debian выпустил обновление безопасности для пакета bubblewrap и прекратил установку флага suid root на исполняемом файле. В качестве причин упоминаются риски эксплуатации уязвимостей, таких как CVE-2026–41163, CVE-2020–5291 и CVE-2016–8659, позволяющих получить привилегии root в системе через манипуляции в suid-файлами.

>>> Источник: OpenNET

©  Linux.org.ru