Vydání systému samostatných balíčků Flatpak 1.12.0

Byla zveřejněna nová stabilní větev sady nástrojů Flatpak 1.12, která poskytuje systém pro vytváření samostatných balíčků, které nejsou vázány na konkrétní linuxové distribuce a běží ve speciálním kontejneru, který izoluje aplikaci od zbytku systému. Podpora spouštění balíčků Flatpak je poskytována pro Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux a Ubuntu. Balíčky Flatpak jsou součástí úložiště Fedory a jsou podporovány nativním správcem aplikací GNOME.

Klíčové inovace ve větvi Flatpak 1.12:

  • Vylepšená správa vnořených prostředí sandbox používaných v balíčku flatpak s klientem pro službu doručování her Steam. Ve vnořených sandboxech je povoleno vytváření samostatných hierarchií adresářů /usr a /app, což ve Steamu slouží ke spouštění her v samostatném kontejneru s vlastním oddílem /usr, izolovaném od prostředí s klientem Steam.
  • Všechny instance balíčku se stejným identifikátorem aplikace (app-ID) sdílejí adresáře /tmp a $XDG_RUNTIME_DIR. Volitelně pomocí příznaku „--allow=per-app-dev-shm“ můžete povolit použití sdíleného adresáře /dev/shm.
  • Vylepšená podpora pro aplikace Text User Interface (TUI), jako je gdb.
  • Do utility build-update-repo byla přidána rychlejší implementace příkazu „ostree prune“, optimalizovaná pro práci s repozitáři v archivním režimu.
  • Byla opravena zranitelnost CVE-2021-41133 při implementaci portálového mechanismu spojená s chybějícím blokováním nových systémových volání souvisejících s připojováním oddílů v pravidlech seccomp. Tato chyba zabezpečení umožnila aplikaci vytvořit vnořenou karanténu, která obchází „portálové“ ověřovací mechanismy, které se používají k organizaci přístupu ke zdrojům mimo kontejner.

    V důsledku toho by útočník provedením systémových volání souvisejících s připojením mohl obejít mechanismus izolace sandboxu a získat plný přístup k obsahu hostitelského prostředí. Tuto chybu zabezpečení lze zneužít pouze v balíčcích, které poskytují aplikacím přímý přístup k soketům AF_UNIX, jako jsou ty, které používají Wayland, Pipewire a pipewire-pulse. Ve verzi 1.12.0 nebyla zranitelnost zcela odstraněna, takže aktualizace 1.12.1 byla vydána rychle.

Připomeňme, že Flatpak umožňuje vývojářům aplikací zjednodušit distribuci jejich programů, které nejsou zahrnuty ve standardních distribučních repozitářích, tím, že připraví jeden univerzální kontejner bez vytváření samostatných sestavení pro každou distribuci. Pro uživatele, kteří si uvědomují bezpečnost, Flatpak umožňuje spouštět spornou aplikaci v kontejneru a poskytuje přístup pouze k síťovým funkcím a uživatelským souborům spojeným s aplikací. Uživatelům se zájmem o nové produkty umožňuje Flatpak instalovat nejnovější testovací a stabilní verze aplikací bez nutnosti provádět změny v systému. Například balíčky Flatpak jsou vytvořeny pro LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio atd.

Aby se zmenšila velikost balíčku, obsahuje pouze závislosti specifické pro aplikaci a základní systémové a grafické knihovny (GTK, Qt, GNOME a KDE knihovny atd.) jsou navrženy jako plug-in standardní runtime prostředí. Klíčový rozdíl mezi Flatpak a Snap je v tom, že Snap používá komponenty hlavního systémového prostředí a izolaci založenou na filtrování systémových volání, zatímco Flatpak vytváří kontejner oddělený od systému a pracuje s velkými runtime sadami, které neposkytují balíčky jako závislosti, ale standard. systémová prostředí (například všechny knihovny nezbytné pro provoz programů GNOME nebo KDE).

Kromě standardního systémového prostředí (runtime), instalovaného prostřednictvím speciálního úložiště, jsou dodávány další závislosti (bundle) potřebné pro provoz aplikace. Celkově runtime a bundle tvoří náplň kontejneru, a to navzdory skutečnosti, že runtime se instaluje samostatně a je svázáno s několika kontejnery najednou, což vám umožňuje vyhnout se duplikaci systémových souborů společných pro kontejnery. Jeden systém může mít nainstalovaných několik různých runtime (GNOME, KDE) nebo několik verzí stejného runtime (GNOME 3.40, GNOME 3.42). Kontejner s aplikací jako závislostí používá vazbu pouze na konkrétní běhové prostředí, bez zohlednění jednotlivých balíčků, které běhové prostředí tvoří. Všechny chybějící prvky jsou zabaleny přímo s aplikací. Když se vytvoří kontejner, obsah runtime se připojí jako oddíl /usr a svazek se připojí do adresáře /app.

Runtime a aplikační kontejnery jsou vytvořeny pomocí technologie OSTree, ve které je obraz atomicky aktualizován z úložiště podobného Gitu, což umožňuje použití metod řízení verzí na distribuční komponenty (například můžete rychle vrátit systém zpět na předchozí stav). Balíčky RPM se překládají do úložiště OSTree pomocí speciální vrstvy rpm-ostree. Samostatná instalace a aktualizace balíčků v rámci pracovního prostředí není podporována, systém se neaktualizuje na úrovni jednotlivých komponent, ale jako celek atomicky mění svůj stav. Poskytuje nástroje pro postupnou aplikaci aktualizací, takže není nutné při každé aktualizaci zcela nahrazovat bitovou kopii.

Vygenerované izolované prostředí je zcela nezávislé na použité distribuci a při správném nastavení balíčku nemá přístup k souborům a procesům uživatele ani hlavního systému, nemůže přímo přistupovat k zařízení, s výjimkou výstupu přes DRI, a volání do síťového subsystému. Organizace grafických výstupů a vstupů je realizována pomocí protokolu Wayland nebo přes X11 socket forwarding. Interakce s vnějším prostředím je založena na systému zasílání zpráv DBus a speciálním Portals API.

Pro izolaci se používá vrstva Bubblewrap a tradiční technologie virtualizace kontejnerů Linuxu, založené na použití cgroups, jmenných prostorů, Seccomp a SELinux. PulseAudio se používá k výstupu zvuku. V tomto případě lze izolaci zakázat, čehož využívají vývojáři mnoha oblíbených balíčků k získání plného přístupu k systému souborů a všem zařízením v systému. Například GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity a VLC přicházejí s omezeným režimem izolace, který ponechává plný přístup k domovskému adresáři.

Pokud jsou kompromitovány balíčky s přístupem do domovského adresáře, navzdory přítomnosti štítku „sandboxed“ v popisu balíčku, útočníkovi stačí změnit soubor ~/.bashrc, aby mohl spustit svůj kód. Samostatnou otázkou je kontrola změn balíčků a důvěra v tvůrce balíčků, kteří často nejsou spojeni s hlavním projektem nebo distribucemi.

Zdroj: opennet.ru

Přidat komentář