Vydanie systému samostatných balíkov Flatpak 1.12.0

Bola zverejnená nová stabilná vetva sady nástrojov Flatpak 1.12, ktorá poskytuje systém na vytváranie samostatných balíkov, ktoré nie sú viazané na konkrétne distribúcie Linuxu a bežia v špeciálnom kontajneri, ktorý izoluje aplikáciu od zvyšku systému. Podpora spustenia balíkov Flatpak je poskytovaná pre Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux a Ubuntu. Balíky Flatpak sú zahrnuté v repozitári Fedory a sú podporované natívnym manažérom aplikácií GNOME.

Kľúčové inovácie v pobočke Flatpak 1.12:

  • Vylepšená správa vnorených prostredí sandbox používaných v balíku flatpak s klientom pre službu doručovania hier Steam. Vo vnorených sandboxoch je povolené vytváranie samostatných hierarchií adresárov /usr a /app, čo v Steame slúži na spúšťanie hier v samostatnom kontajneri s vlastnou /usr partíciou, izolovanou od prostredia s klientom Steam.
  • Všetky inštancie balíka s rovnakým identifikátorom aplikácie (app-ID) zdieľajú adresáre /tmp a $XDG_RUNTIME_DIR. Voliteľne pomocou príznaku „--allow=per-app-dev-shm“ môžete povoliť používanie zdieľaného adresára /dev/shm.
  • Vylepšená podpora pre aplikácie Text User Interface (TUI), ako je gdb.
  • Do utility build-update-repo bola pridaná rýchlejšia implementácia príkazu „ostree prune“, optimalizovaná pre prácu s repozitármi v režime archívu.
  • Zraniteľnosť CVE-2021-41133 pri implementácii portálového mechanizmu spojená s nedostatočným blokovaním nových systémových volaní súvisiacich s pripájaním oddielov v pravidlách seccomp bola opravená. Zraniteľnosť umožnila aplikácii vytvoriť vnorený karantén na obídenie „portálových“ overovacích mechanizmov, ktoré sa používajú na organizáciu prístupu k zdrojom mimo kontajnera.

    Výsledkom je, že útočník vykonaním systémových volaní súvisiacich s montážou by mohol obísť izolačný mechanizmus sandboxu a získať plný prístup k obsahu hostiteľského prostredia. Zraniteľnosť možno zneužiť iba v balíkoch, ktoré poskytujú aplikáciám priamy prístup k zásuvkám AF_UNIX, ako sú tie, ktoré používajú Wayland, Pipewire a pipewire-pulse. Vo verzii 1.12.0 nebola zraniteľnosť úplne odstránená, takže aktualizácia 1.12.1 bola vydaná rýchlo.

Pripomeňme, že Flatpak umožňuje vývojárom aplikácií zjednodušiť distribúciu ich programov, ktoré nie sú zahrnuté v štandardných distribučných repozitároch, prípravou jedného univerzálneho kontajnera bez vytvárania samostatných zostáv pre každú distribúciu. Používateľom, ktorí si uvedomujú bezpečnosť, Flatpak umožňuje spustiť spornú aplikáciu v kontajneri, pričom poskytuje prístup iba k sieťovým funkciám a užívateľským súborom spojeným s aplikáciou. Používateľom, ktorí sa zaujímajú o nové produkty, Flatpak umožňuje inštalovať najnovšie testovacie a stabilné vydania aplikácií bez nutnosti vykonávať zmeny v systéme. Napríklad balíky Flatpak sú vytvorené pre LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio atď.

Aby sa zmenšila veľkosť balíka, obsahuje iba závislosti špecifické pre aplikáciu a základné systémové a grafické knižnice (GTK, Qt, GNOME a KDE knižnice atď.) sú navrhnuté ako plug-in štandardné runtime prostredia. Kľúčový rozdiel medzi Flatpak a Snap je v tom, že Snap používa komponenty hlavného systémového prostredia a izoláciu založenú na filtrovaní systémových volaní, zatiaľ čo Flatpak vytvára kontajner oddelený od systému a pracuje s veľkými runtime sadami, pričom neposkytuje balíčky ako závislosti, ale štandard. systémových prostredí (napríklad všetky knižnice potrebné na fungovanie programov GNOME alebo KDE).

Okrem štandardného systémového prostredia (runtime), inštalovaného prostredníctvom špeciálneho úložiska, sú dodávané ďalšie závislosti (bundle) potrebné pre chod aplikácie. Celkovo runtime a bundle tvoria náplň kontajnera, a to aj napriek tomu, že runtime je inštalované samostatne a viazané na niekoľko kontajnerov naraz, čo umožňuje vyhnúť sa duplikácii systémových súborov spoločných pre kontajnery. Jeden systém môže mať nainštalovaných niekoľko rôznych runtime (GNOME, KDE) alebo niekoľko verzií toho istého runtime (GNOME 3.40, GNOME 3.42). Kontajner s aplikáciou ako závislosťou používa väzbu len na konkrétny runtime bez toho, aby bral do úvahy jednotlivé balíky, ktoré tvoria runtime. Všetky chýbajúce prvky sú pribalené priamo k aplikácii. Keď sa vytvorí kontajner, obsah runtime sa pripojí ako oddiel /usr a zväzok sa pripojí do adresára /app.

Runtime a aplikačné kontajnery sú vytvorené pomocou technológie OSTree, v ktorej sa obraz atomicky aktualizuje z úložiska typu Git, čo umožňuje použitie metód riadenia verzií na komponenty distribúcie (napríklad môžete rýchlo vrátiť systém späť na predchádzajúci stav). Balíky RPM sa prekladajú do úložiska OSTree pomocou špeciálnej vrstvy rpm-ostree. Samostatná inštalácia a aktualizácia balíkov v rámci pracovného prostredia nie je podporovaná, systém sa neaktualizuje na úrovni jednotlivých komponentov, ale ako celku, pričom atómovo mení svoj stav. Poskytuje nástroje na postupnú aplikáciu aktualizácií, čím sa eliminuje potreba úplne nahradiť obraz pri každej aktualizácii.

Vygenerované izolované prostredie je úplne nezávislé od použitej distribúcie a pri správnom nastavení balíka nemá prístup k súborom a procesom používateľa ani hlavného systému a nemôže priamo pristupovať k zariadeniu, s výnimkou výstupu cez DRI a volania. do sieťového subsystému. Organizácia grafického výstupu a vstupu je realizovaná pomocou protokolu Wayland alebo cez X11 socket forwarding. Interakcia s externým prostredím je založená na systéme správ DBus a špeciálnom API Portals.

Na izoláciu sa používa vrstva Bubblewrap a tradičné technológie virtualizácie kontajnerov Linuxu, založené na použití cgroups, namespaces, Seccomp a SELinux. PulseAudio sa používa na výstup zvuku. V tomto prípade je možné zakázať izoláciu, čo používajú vývojári mnohých populárnych balíkov na získanie plného prístupu k systému súborov a všetkým zariadeniam v systéme. Napríklad GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity a VLC prichádzajú s obmedzeným režimom izolácie, ktorý ponecháva úplný prístup k domovskému adresáru.

Ak sú ohrozené balíky s prístupom do domovského adresára, napriek prítomnosti označenia „sandboxed“ v popise balíka, útočníkovi stačí zmeniť súbor ~/.bashrc, aby mohol spustiť svoj kód. Samostatnou otázkou je kontrola zmien v balíkoch a dôvera v tvorcov balíkov, ktorí často nie sú spojení s hlavným projektom alebo distribúciami.

Zdroj: opennet.ru

Pridať komentár