Wydanie systemu samodzielnych pakietów Flatpak 1.12.0

Opublikowano nową stabilną wersję narzędzi Flatpak 1.12, które oferują system do budowy samodzielnych pakietów, niezwiązanych z konkretnymi dystrybucjami Linuksa i uruchamianych w specjalnym kontenerze, izolującym aplikację od reszty systemu. Wsparcie dla uruchamiania pakietów Flatpak dostępne jest dla Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux i Ubuntu. Pakiety Flatpak zostały włączone do repozytorium Fedora i są wspierane w standardowej aplikacji do zarządzania aplikacjami GNOME.

Kluczowe nowości w wersji Flatpak 1.12:

  • Ulepszono zarządzanie zagnieżdżonymi środowiskami sandbox, które są używane w pakiecie flatpak z klientem usługi dostarczania gier Steam. W zagnieżdżonych sandboxach zezwolono na tworzenie odrębnych hierarchii katalogów /usr i /app, co jest używane w Steam do uruchamiania gier w oddzielnym kontenerze z własną przestrzenią /usr, izolowaną od środowiska z klientem Steam.
  • Wszystkie instancje pakietów o tym samym identyfikatorze aplikacji (app-ID) mają wspólne katalogi /tmp oraz $XDG_RUNTIME_DIR. Opcjonalnie za pomocą flagi "—allow=per-app-dev-shm" można włączyć użycie wspólnego katalogu /dev/shm.
  • Ulepszono wsparcie dla aplikacji z tekstowym interfejsem użytkownika (TUI), takich jak gdb.
  • Do narzędzia build-update-repo dodano szybszą implementację polecenia "ostree prune", zoptymalizowaną do pracy z repozytoriami w trybie archiwum.
  • Usunięto podatność CVE-2021-41133 w implementacji mechanizmu portali, związaną z brakiem blokady nowych wywołań systemowych związanych z montowaniem partycji w regułach seccomp. Podatność ta pozwalała aplikacji na stworzenie zagnieżdżonego sandboxu, omijając mechanizmy weryfikacji "portali", które są stosowane do organizacji dostępu do zasobów poza kontenerem.

    Ostatecznie, atakujący poprzez wykonywanie powiązanych z montowaniem wywołań systemowych mógł obejść mechanizm izolacji sandboxu i uzyskać pełny dostęp do zawartości środowiska hosta. Wykorzystanie podatności jest możliwe tylko w pakietach, które zapewniają aplikacjom bezpośredni dostęp do gniazd AF_UNIX, które są używane na przykład w Wayland, Pipewire i pipewire-pulse. W wersji 1.12.0 podatność została usunięta nie całkowicie, dlatego niezwłocznie wydano aktualizację 1.12.1.

Przypomnijmy, że programiści aplikacji Flatpak mają możliwość uproszczenia dystrybucji swoich programów, które nie są częścią standardowych repozytoriów dystrybucji, dzięki przygotowaniu jednego uniwersalnego kontenera bez potrzeby tworzenia oddzielnych kompilacji dla każdej dystrybucji. Użytkownikom, którzy dbają o bezpieczeństwo, Flatpak pozwala na uruchomienie budzącej wątpliwości aplikacji w kontenerze, udostępniając dostęp tylko do funkcji sieciowych i plików użytkownika związanych z aplikacją. Użytkownikom zainteresowanym nowinkami, Flatpak umożliwia instalację najnowszych wersji testowych i stabilnych aplikacji bez potrzeby wprowadzania zmian w systemie. Na przykład, pakiety Flatpak są tworzone dla LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio itd.

Aby zmniejszyć rozmiar pakietu, zawiera on tylko specyficzne dla aplikacji zależności, podczas gdy podstawowe biblioteki systemowe i graficzne (GTK, Qt, biblioteki GNOME i KDE itd.) są przedstawione jako modułowe standardowe środowiska uruchomieniowe. Kluczową różnicą między Flatpak a Snap jest to, że Snap wykorzystuje komponenty środowiska głównego systemu i izolację opartą na filtracji wywołań systemowych, podczas gdy Flatpak tworzy osobny kontener od systemu i operuje na dużych zestawach środowisk uruchomieniowych, udostępniając jako zależności nie pakiety, lecz standardowe środowiska systemowe (na przykład wszystkie biblioteki niezbędne do działania programów GNOME lub KDE).

Oprócz typowego środowiska systemowego (runtime), instalowanego za pośrednictwem specjalnego repozytorium, dostarczane są dodatkowe zależności (bundle), wymagane do działania aplikacji. W sumie runtime i bundle tworzą zawartość kontenera, przy czym runtime jest instalowany oddzielnie i jest powiązany z wieloma kontenerami, co pozwala uniknąć duplikowania wspólnych dla kontenerów plików systemowych. W jednym systemie może być zainstalowanych kilka różnych runtime'ów (GNOME, KDE) lub kilka wersji jednego runtime'u (GNOME 3.40, GNOME 3.42). Kontener z aplikacją jako zależnością wykorzystuje powiązanie tylko z określonym runtime, bez uwzględniania pojedynczych pakietów, z których składa się runtime. Wszystkie brakujące elementy są pakowane bezpośrednio razem z aplikacją. Podczas tworzenia kontenera zawartość runtime jest montowana jako lokalizacja /usr, a bundle montowane jest w katalogu /app.

Zawartość runtime i kontenerów aplikacji jest tworzona z wykorzystaniem technologii OSTree, w której obraz atomowo aktualizowany jest z repozytorium podobnego do Git, co pozwala stosować metody kontroli wersji do komponentów dystrybucji (na przykład można szybko przywrócić system do poprzedniego stanu). Pakiety RPM są tłumaczone do repozytorium OSTree za pomocą specjalnej warstwy rpm-ostree. Oddzielna instalacja i aktualizacja pakietów wewnątrz środowiska roboczego nie jest wspierana, system aktualizowany jest nie na poziomie pojedynczych komponentów, ale w całości, atomowo zmieniając swoje stany. Dostarczane są narzędzia do inkrementalnego stosowania aktualizacji, eliminujące potrzebę pełnej wymiany obrazu przy każdej aktualizacji.

Tworzone izolowane środowisko jest całkowicie niezależne od używanej dystrybucji i przy odpowiednich ustawieniach pakietu nie ma dostępu do plików i procesów użytkownika lub systemu głównego, nie może bezpośrednio łączyć się z urządzeniem, z wyjątkiem wyjścia przez DRI, oraz połączeń z systemem sieciowym. Wyjście grafiki i organizacja wejścia są realizowane za pomocą protokołu Wayland lub przez przekazywanie gniazda X11. Interakcja z otoczeniem opiera się na systemie wymiany komunikatów DBus i specjalnym API Portals.

Do izolacji wykorzystuje się warstwę Bubblewrap oraz tradycyjne technologie konteneryzacji w systemie Linux, oparte na użyciu cgroups, przestrzeni nazw (namespaces), Seccomp i SELinux. Do wyprowadzania dźwięku stosuje się PulseAudio. Przy tym izolację można wyłączyć, co wykorzystują deweloperzy wielu popularnych pakietów, aby uzyskać pełny dostęp do systemu plików i wszystkich urządzeń w systemie. Na przykład pakiety GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity i VLC są dostarczane z ograniczonym trybem izolacji, który pozostawia pełny dostęp do katalogu domowego.

W przypadku kompromitacji pakietów z dostępem do katalogu domowego, pomimo oznaczenia "sandboxed" w opisie pakietu, aby złośliwy użytkownik mógł uruchomić swój kod, wystarczy, że zmieni plik ~/.bashrc. Osobnym zagadnieniem jest kontrolowanie wprowadzanych zmian w pakietach oraz zaufanie do twórców pakietów, którzy często nie są powiązani z głównym projektem ani z dystrybucjami.

Ź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