Bubblewrap, narzędzie do tworzenia aplikacji w izolowanych środowiskach

Bubblewrap to narzędzie co działa do organizowania pracy w piaskownicy w systemie Linux i biegnij na poziomie aplikacji nieuprzywilejowanych użytkowników. W praktyce Bubblewrap jest używany przez projekt Flatpak jako warstwa pośrednia do izolowania aplikacji uruchamianych z pakietów oprogramowania.

Do izolacji Linux używa technologii wirtualizacji tradycyjnych kontenerów opartych na wykorzystaniu cgroups, namespaces, Seccomp i SELinux. Aby wykonać uprzywilejowane operacje w celu skonfigurowania kontenera, Bubblewrap jest uruchamiany z uprawnieniami roota (plik wykonywalny z flagą suid), po którym następuje reset uprawnień po zainicjowaniu kontenera.

Nie ma potrzeby włączania przestrzeni nazw użytkowników w systemie, co pozwala na użycie własnego zestawu identyfikatorów w kontenerach, ponieważ domyślnie nie działa w wielu dystrybucjach.

O Bubblewrap

Bubblewrap jest pozycjonowany jako ograniczona implementacja suida z podzbioru funkcji przestrzeni nazw użytkowników, aby wykluczyć wszystkie identyfikatory użytkowników i procesów ze środowiska poza bieżącym, użyj trybów CLONE_NEWUSER i CLONE_NEWPID.

Dla dodatkowej ochrony, programy działające w Bubblewrap uruchamiają się w trybie PR_SET_NO_NEW_PRIVS, który zabrania nowych przywilejów, na przykład z flagą setuid.

Izolacja na poziomie systemu plików jest wykonywana przez utworzenie, domyślnie, nowej przestrzeni nazw montowania, w której pusta partycja główna jest tworzona przy użyciu tmpfs.

Jeśli to konieczne, zewnętrzne sekcje FS są dołączone do tej sekcji w «mocowanie – wiązanie»(Na przykład zaczynając od opcji«bwrap –ro-bind / usr / usr', Sekcja / usr jest przekazywana z hosta w trybie tylko do odczytu).

Możliwości sieciowe są ograniczone do dostępu do interfejsu sprzężenia zwrotnego odwrócona z izolacją stosu sieciowego za pomocą wskaźników CLONE_NEWNET i CLONE_NEWUTS.

Kluczowa różnica w porównaniu z podobnym projektem Firejail, który również używa programu uruchamiającego setuid, to że w Bubblewrap, warstwa podstawowa zawiera tylko minimum niezbędnych elementów a wszystkie zaawansowane funkcje wymagane do uruchamiania aplikacji graficznych, interakcji z pulpitem i filtrowania wywołań Pulseaudio są przenoszone na bok Flatpak i uruchamiane po zresetowaniu uprawnień.

Z drugiej strony Firejail łączy wszystkie powiązane funkcje w jeden plik wykonywalnykomplikując Twój audyt i utrzymując bezpieczeństwo na odpowiednim poziomie.

W zasadzie Bubblewrap działa za pomocą tworzenie pustej przestrzeni nazw montowania w tymczasowym systemie plików który zostanie zniszczony po zakończeniu przetwarzania w piaskownicy.

Używając przełączników, użytkownik może zbudować żądane środowisko systemu plików w przestrzeni nazw montowania, montując na łączu żądanych katalogów z systemu hosta.

Folia bąbelkowa 0.4.0

Bubblewrap jest obecnie w wersji 0.4.0 który został niedawno wydany. Kod projektu jest napisany w C i rozpowszechniany na licencji LGPLv2 +.

Nowa wersja wyróżnia się implementacją obsługi łączenia przestrzeni nazw i procesów istniejących użytkowników (przestrzenie nazw pid).

Dodano flagi „–userns”, „–userns2” i „–pidns” w celu kontrolowania połączenia przestrzeni nazw.

Ta funkcja nie działa w trybie setuid i wymaga oddzielnego trybu, który może działać bez uprawnień roota, ale wymaga włączenia przestrzeni nazw użytkowników w systemie (domyślnie wyłączone w Debianie i RHEL / CentOS) i nie wyklucza możliwości wykorzystania pozostałe luki na granicy ograniczeń „przestrzeni nazw użytkowników”.

Z nowych funkcji Bubblewrap 0.4, obserwuje się również możliwość budowania z biblioteką musl C zamiast glibc, oraz obsługę zapisywania informacji o przestrzeni nazw do pliku statystyk w formacie JSON.

Kod Bubblewrap, a także dokumentację na jego temat można znaleźć na Github, link jest następujący.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.