nowe wydanie zestawu narzędzi , zaprojektowany w celu organizacji pracy w środowiskach odizolowanych Linux i działa na poziomie aplikacji dla użytkowników nieuprawnionych. W praktyce Bubblewrap jest wykorzystywany przez projekt Flatpak jako warstwa izolująca aplikacje uruchamiane z pakietów. Kod projektu jest napisany w języku C i na podstawie licencji LGPLv2+.
Do izolacji stosuje się materiały tradycyjne Linux technologie wirtualizacji kontenerów oparte na wykorzystaniu cgroups, przestrzeni nazw, Seccomp i SELinuxAby wykonać operacje konfiguracji kontenera z uprawnieniami uprzywilejowanymi, Bubblewrap uruchamia się z uprawnieniami roota (plik wykonywalny ma włączoną flagę suid), a następnie usuwa uprawnienia po zakończeniu inicjalizacji kontenera.
Aktywacja przestrzeni nazw użytkowników w systemie, która pozwala kontenerom używać własnego, oddzielnego zestawu identyfikatorów, nie jest wymagana do działania, ponieważ domyślnie nie działa w wielu dystrybucjach (Bubblewrap jest pozycjonowany jako ograniczona implementacja suid podzbioru możliwości przestrzeni nazw użytkowników — aby wykluczyć wszystkie identyfikatory użytkowników i procesów ze środowiska z wyjątkiem bieżącego, używane są tryby CLONE_NEWUSER i CLONE_NEWPID). W celu dodatkowej ochrony pliki wykonywalne pod kontrolą
Programy Bubblewrap działają w trybie PR_SET_NO_NEW_PRIVS, który uniemożliwia uzyskanie nowych uprawnień, np. gdy obecna jest flaga setuid.
Izolacja na poziomie systemu plików odbywa się domyślnie poprzez utworzenie nowej przestrzeni nazw montowania, w której tworzona jest pusta partycja główna za pomocą tmpfs. W razie potrzeby do tej partycji dołączane są zewnętrzne partycje FS w trybie „mount —bind” (np. przy uruchomieniu z opcją „bwrap —ro-bind /usr /usr” partycja /usr jest przekazywana z systemu głównego w trybie tylko do odczytu). Możliwości sieci są ograniczone do dostępu do interfejsu pętli zwrotnej z izolacją stosu sieciowego za pomocą flag CLONE_NEWNET i CLONE_NEWUTS.
Kluczowa różnica w porównaniu z podobnym projektem , który również używa modelu uruchamiania setuid, polega na tym, że w Bubblewrap warstwa tworzenia kontenera obejmuje tylko niezbędne minimalne możliwości, a wszystkie zaawansowane funkcje wymagane do uruchamiania aplikacji graficznych, interakcji z pulpitem i filtrowania żądań Pulseaudio są przenoszone na stronę Flatpak i są wykonywane po zresetowaniu uprawnień. Firejail z kolei łączy wszystkie powiązane funkcje w jednym pliku wykonywalnym, co komplikuje jego audyt i utrzymywanie bezpieczeństwa na .
Nowa wersja wyróżnia się implementacją obsługi dołączania istniejących przestrzeni nazw użytkownika i przestrzeni nazw pid. Dodano flagi „--userns”, „--userns2” i „--pidns”, aby kontrolować dołączanie przestrzeni nazw.
Ta funkcja nie działa w trybie setuid i wymaga użycia osobnego trybu, który może działać bez uzyskiwania uprawnień roota, ale wymaga aktywacji
przestrzenie nazw użytkowników w systemie (domyślnie wyłączone w Debian i RHEL/CentOS) i nie wyklucza możliwości aby ominąć ograniczenia „przestrzeni nazw użytkownika”. Nowe funkcje Bubblewrap 0.4 obejmują również możliwość budowania z biblioteką C musl zamiast glibc i obsługę zapisywania informacji o przestrzeni nazw do pliku statystyk JSON.
Źródło: opennet.ru
