Vydání Bubblewrap 0.4.0, vrstvy pro vytváření izolovaných prostředí

Dostupný новый выпуск инструментария Bubblewrap 0.4.0, предназначенного для организации работы изолированных окружений в Linux и функционирующий на уровне приложений непривилегированных пользователей. На практике Bubblewrap используется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений. Код проекта написан на языке Си и distribuovány под лицензией LGPLv2+.

Pro izolaci se používají tradiční technologie virtualizace kontejnerů Linuxu, založené na použití cgroups, jmenných prostorů, Seccomp a SELinux. Chcete-li provést privilegované operace pro konfiguraci kontejneru, spustí se Bubblewrap s právy root (spustitelný soubor s příznakem suid) a poté, co je kontejner inicializován, obnoví oprávnění.

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

Izolace na úrovni souborového systému se provádí vytvořením nového jmenného prostoru připojení ve výchozím nastavení, ve kterém se pomocí tmpfs vytvoří prázdný kořenový oddíl. V případě potřeby jsou k tomuto oddílu připojeny externí oddíly FS v režimu „mount —bind“ (například při spuštění s volbou „bwrap —ro-bind /usr /usr“ je oddíl /usr předán z hlavního systému v režimu pouze pro čtení). Možnosti sítě jsou omezeny na přístup k rozhraní zpětné smyčky s izolací síťového zásobníku prostřednictvím příznaků CLONE_NEWNET a CLONE_NEWUTS.

Hlavní rozdíl oproti podobnému projektu Požární vězení, который также использует модель запуска с применением setuid, является то, что в Bubblewrap прослойка для создания контейнеров включает только необходимый минимум возможностей, а все расширенные функции, необходимые для запуска графических приложений, взаимодействия с рабочим столом и фильтрации обращений к Pulseaudio, вынесены на сторону Flatpak и выполняются уже после сброса привилегий. Firejail же объединяет в одном исполняемом файле все сопутствующие функции, что усложняет его аудит и поддержание безопасности на správnou úroveň.

Новый выпуск примечателен реализацией поддержки присоединения существующих пространств имён идентификаторов пользователей (user namespaces) и процессов (pid namespaces). Для управления подключением пространств имён добавлены флаги «—userns», «—userns2» и «—pidns».
Данная возможность не работает в режиме setuid и требует применения отдельного режима, который может работать без получения прав root, но требует активации
user namespaces в системе (по умолчанию отключены в Debian и RHEL/CentOS) и не исключает возможность vykořisťování potenciálně остающихся zranitelnosti для обода ограничений «user namespaces». Из новых возможностей Bubblewrap 0.4 также отмечается возможность сборки с Си-библиотекой musl вместо glibc и поддержка сохранения информации о пространствах имён в файл со статистикой в формате JSON.

Zdroj: opennet.ru

Přidat komentář