Wydanie Bubblewrap 0.5.0, warstwy do tworzenia izolowanych środowisk

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

Do izolacji wykorzystywane są tradycyjne technologie wirtualizacji kontenerów dla systemów Linux, oparte na korzystaniu z cgroups, przestrzeni nazw (namespaces), Seccomp i SELinux. Aby wykonać operacje uprzywilejowane związane z konfiguracją kontenera, Bubblewrap uruchamiane jest z prawami root (plik wykonywalny z flagą suid) z późniejszym zresetowaniem uprawnień po zakończeniu inicjalizacji kontenera.

Aktywacja w systemie przestrzeni nazw identyfikatorów użytkownika (user namespaces), pozwalających na korzystanie w kontenerach z odrębnego zestawu identyfikatorów, do działania nie jest wymagana, ponieważ domyślnie nie działa w wielu dystrybucjach (Bubblewrap jest promowane jako ograniczona implementacja suid podzbioru możliwości przestrzeni nazw użytkownika — do wyłączenia wszystkich identyfikatorów użytkowników i procesów z środowiska, poza obecnym, używane są tryby CLONE_NEWUSER i CLONE_NEWPID). Aby zapewnić dodatkową ochronę, programy uruchamiane pod zarządzaniem Bubblewrap są uruchamiane w trybie PR_SET_NO_NEW_PRIVS, który zabrania uzyskiwania nowych uprawnień, na przykład w przypadku posiadania flagi setuid.

Izolacja na poziomie systemu plików odbywa się poprzez stworzenie domyślnej nowej przestrzeni nazw punktów montowania (mount namespace), w której z pomocą tmpfs tworzony jest pusty katalog główny. W razie potrzeby do tego katalogu podpinane są partycje zewnętrznego systemu plików w trybie „mount —bind” (na przykład przy uruchamianiu z opcją „bwrap —ro-bind /usr /usr” partycja /usr jest przekazywana z głównego systemu w trybie tylko do odczytu). Możliwości sieciowe są ograniczone do dostępu do interfejsu loopback z izolacją stosu sieciowego za pomocą flag CLONE_NEWNET i CLONE_NEWUTS.

Kluczową różnicą w porównaniu do podobnego projektu Firejail, który również korzysta z modelu uruchamiania z użyciem setuid, jest to, że w Bubblewrap pośrednik do tworzenia kontenerów zawiera tylko niezbędny minimalny zbiór możliwości, podczas gdy wszystkie rozszerzone funkcje, potrzebne do uruchamiania aplikacji graficznych, interakcji z pulpitem oraz filtrowania połączeń z Pulseaudio, zostały przeniesione na stronę Flatpak i są wykonywane już po zresetowaniu uprawnień. Firejail natomiast łączy w jednym pliku wykonywalnym wszystkie powiązane funkcje, co utrudnia jego audyt i utrzymanie bezpieczeństwa na odpowiednim poziomie.

В новом выпуске предложены опции: «—chmod» для изменения прав доступа, «—clearenv» для очистки переменных окружения (кроме PWD) и «—perms» для определения прав доступа, применяемых при выполнении операций «—bind-data», «—dir», «—file», «—ro-bind-data» и «—tmpfs». Улучшена диагностика проблем, возникающий при сбое монтирования в режиме bind. Для zsh добавлена поддержка автодополнения команд нажатием табуляции.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster