Выпуск Bubblewrap 0.12, прослойки для создания изолированных окружений
Опубликована новая версия инструментария для организации работы изолированных окружений 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)».
Источник: http://www.opennet.ru/opennews/art.shtml? num=66151
© OpenNet
