Wydanie Bubblewrap 0.4.0, nakładki do tworzenia izolowanych środowisk.

Dostępny nowa wersja narzędzi Bubblewrap 0.4.0, przeznaczonego do organizacji pracy zamkniętych środowisk w Linuxie, działając na poziomie aplikacji nieuprzywilejowanych użytkowników. W praktyce Bubblewrap jest wykorzystywane przez projekt Flatpak jako warstwa do izolacji aplikacji uruchamianych z pakietów. Kod projektu napisano w języku C i rozpowszechniany jest objęty licencją 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ąca na użycie w kontenerach własnego oddzielnego zestawu identyfikatorów, nie jest konieczna, ponieważ domyślnie nie działa w wielu dystrybucjach (Bubblewrap jest promowane jako ograniczona implementacja suid podzbioru możliwości user namespaces — aby wykluczyć wszystkie identyfikatory użytkowników i procesów z otoczenia, poza bieżącym, używane są tryby CLONE_NEWUSER i CLONE_NEWPID). W celu dodatkowej ochrony programy uruchamiane pod kontrolą
Bubblewrap działają w trybie PR_SET_NO_NEW_PRIVS, który zabrania uzyskiwania nowych uprawnień, na przykład w przypadku, gdy flagą jest 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óre również wykorzystuje model uruchamiania z zastosowaniem setuid, wyróżnia się tym, że w Bubblewrap warstwa do tworzenia kontenerów zawiera jedynie niezbędny minimalny zestaw możliwości, a wszystkie rozszerzone funkcje niezbędne do uruchomienia aplikacji graficznych, interakcji z pulpitem i filtrowania żądań do Pulseaudio są przeniesione na stronę Flatpak i wykonywane już po zresetowaniu uprawnień. Firejail z kolei łączy w jednym pliku wykonawczym wszystkie towarzyszące funkcje, co utrudnia audyt i utrzymanie bezpieczeństwa na odpowiednim poziomie..

Nowa wersja wyróżnia się wdrożeniem wsparcia dla dołączania istniejących przestrzeni nazw identyfikatorów użytkowników (user namespaces) i procesów (pid namespaces). Aby zarządzać połączeniem przestrzeni nazw, dodano flagi „—userns”, „—userns2” i „—pidns”.
Funkcja ta nie działa w trybie setuid i wymaga zastosowania oddzielnego trybu, który może działać bez uzyskiwania uprawnień root, ale wymaga aktywacji
user namespaces w systemie (domyślnie wyłączone w Debianie i RHEL/CentOS) i nie wyklucza możliwości eksploatację potencjalnie pozostających vulnerabilities dla obwodu ograniczeń „user namespaces”. Wśród nowych funkcji Bubblewrap 0.4 wyróżnia się również możliwość kompilacji z biblioteką C musl zamiast glibc oraz wsparcie dla zapisywania informacji o przestrzeniach nazw do pliku statystyki w formacie JSON.

Ź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