Wydanie Bubblewrap 0.12, warstwy do tworzenia izolowanych środowisk

Opublikowano nową wersję narzędzi do organizacji pracy w izolowanych środowiskach Bubblewrap 0.12, wykorzystywanych do ograniczenia poszczególnych aplikacji użytkowników bez przywilejów. W praktyce Bubblewrap jest stosowany w projekcie Flatpak jako warstwa do izolacji uruchamianych aplikacji z pakietów. Izolacja odbywa się przy użyciu tradycyjnych technologii kontenerowej wirtualizacji w systemach Linux, opartych na wykorzystaniu cgroups, przestrzeni nazw (namespaces), Seccomp i SELinux. Kod projektu jest napisany w języku C i jest rozpowszechniany na licencji LGPLv2.1+.

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.

Aby wykluczyć wszystkie zbędne identyfikatory użytkowników i procesów z tworzonego izolowanego środowiska, można stosować tryby CLONE_NEWUSER (user namespace) i CLONE_NEWPID (PID namespace), natomiast do zabronienia przyznawania nowych uprawnień wykorzystuje się tryb PR_SET_NO_NEW_PRIVS. Aby uzyskać niezbędne uprawnienia wykorzystuje się „user namespace”.

W nowym wydaniu:

  • Licencja na kod została zmieniona z LGPL 2.0+ na LGPL 2.1+.
  • Wsparcie dla kompilacji w formie pliku wykonywalnego, który uzyskuje dodatkowe przywileje za pomocą flagi suid root, zostało zakończone. W systemie wymagana jest teraz obsługa „user namespace”. Jako powód podano pracochłonność utrzymania wersji z flagą suid na tle powszechnej obsługi „user namespace” w dystrybucjach.
  • Dodano opcję „—not-a-security-boundary”, której ustawienie powoduje, że niektóre błędy w konfiguracji izolowanego środowiska sandbox, takie jak ponowne zamontowanie katalogu, nie prowadzą do awaryjnego zakończenia pracy.
  • Dodano opcję kompilacji „assume_kernel”, dezaktywującą zapewnienie kompatybilności z jądrami Linuksa starszymi niż podana wersja. Na przykład określenie wersji 5.6.0+ spowoduje wykluczenie alternatywnej implementacji funkcjonalności „openat2(RESOLVE_IN_ROOT)”.

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster