Wydanie Bubblewrap 0.8, warstwy do tworzenia izolowanych środowisk.

Dostępna jest wersja narzędzia do organizacji pracy w izolowanych środowiskach Bubblewrap 0.8, zwykle używanego do ograniczania pojedynczych aplikacji nieuprzywilejowanych użytkowników. W praktyce Bubblewrap jest wykorzystywane przez projekt Flatpak jako warstwa do izolacji uruchamianych aplikacji z pakietów. Kod projektu jest napisany w języku C i jest rozpowszechniany na licencji 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.

W nowym wydaniu:

  • Dodano opcję „—disable-userns”, która wyłącza tworzenie swojego wewnętrznego przestrzeni identyfikatorów użytkowników (user namespace) w środowisku sandbox.
  • Dodano opcję „—assert-userns-disabled” do sprawdzenia, że przy użyciu opcji „—disable-userns” jest używane istniejące przestrzeń identyfikatorów użytkowników.
  • Zwiększona informacyjność komunikatów o błędach związanych z wyłączeniem w jądrze ustawień CONFIG_SECCOMP i CONFIG_SECCOMP_FILTER.

Ź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