Izdanje sustava samodostatnih paketa Flatpak 1.12.0

Objavljena je nova stabilna grana alata Flatpak 1.12 koja pruža sustav za izgradnju samostalnih paketa koji nisu vezani uz specifične distribucije Linuxa i rade u posebnom spremniku koji izolira aplikaciju od ostatka sustava. Podrška za pokretanje Flatpak paketa dostupna je za Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux i Ubuntu. Flatpak paketi uključeni su u Fedora repozitorij i podržani su od strane izvornog GNOME upravitelja aplikacija.

Ključne inovacije u grani Flatpak 1.12:

  • Poboljšano upravljanje ugniježđenim sandbox okruženjima koja se koriste u paketu flatpak s klijentom za uslugu isporuke igara Steam. U ugniježđenim sandboxima dopuštena je izrada zasebnih hijerarhija /usr i /app direktorija, koji se u Steamu koriste za pokretanje igara u zasebnom spremniku s vlastitom /usr particijom, izoliranom od okruženja sa Steam klijentom.
  • Sve instance paketa s istim identifikatorom aplikacije (app-ID) dijele direktorije /tmp i $XDG_RUNTIME_DIR. Po izboru, korištenjem oznake “--allow=per-app-dev-shm” možete omogućiti korištenje dijeljenog direktorija /dev/shm.
  • Poboljšana podrška za aplikacije tekstualnog korisničkog sučelja (TUI) kao što je gdb.
  • Brža implementacija naredbe “ostree prune” dodana je uslužnom programu build-update-repo, optimiziranom za rad sa spremištima u arhivskom načinu rada.
  • Ispravljena je ranjivost CVE-2021-41133 u implementaciji mehanizma portala, povezana s nedostatkom blokiranja novih poziva sustava povezanih s montiranjem particija u pravilima seccomp. Ranjivost je omogućila aplikaciji stvaranje ugniježđenog sandboxa kako bi se zaobišli mehanizmi provjere "portala" koji se koriste za organiziranje pristupa resursima izvan spremnika.

    Kao rezultat toga, napadač bi izvođenjem poziva povezanih s montiranjem mogao zaobići izolacijski mehanizam sandboxa i dobiti puni pristup sadržaju okruženja glavnog računala. Ranjivost se može iskoristiti samo u paketima koji aplikacijama omogućuju izravan pristup AF_UNIX utičnicama, poput onih koje koriste Wayland, Pipewire i pipewire-pulse. U izdanju 1.12.0, ranjivost nije u potpunosti uklonjena, pa je ažuriranje 1.12.1 objavljeno za petama.

Podsjetimo, Flatpak omogućuje programerima aplikacija da pojednostave distribuciju svojih programa koji nisu uključeni u standardna repozitorija distribucije pripremom jednog univerzalnog spremnika bez stvaranja zasebnih sklopova za svaku distribuciju. Za korisnike koji brinu o sigurnosti, Flatpak vam omogućuje pokretanje upitne aplikacije u spremniku, pružajući pristup samo mrežnim funkcijama i korisničkim datotekama povezanim s aplikacijom. Za korisnike zainteresirane za nove proizvode, Flatpak omogućuje instaliranje najnovijih testnih i stabilnih izdanja aplikacija bez potrebe za izmjenama sustava. Na primjer, paketi Flatpak izrađeni su za LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio itd.

Kako bi se smanjila veličina paketa, uključuje samo ovisnosti specifične za aplikaciju, a osnovni sustav i grafičke biblioteke (GTK, Qt, GNOME i KDE biblioteke, itd.) dizajnirane su kao plug-in standardna runtime okruženja. Ključna razlika između Flatpaka i Snapa je u tome što Snap koristi komponente glavnog okruženja sustava i izolaciju na temelju filtriranja poziva sustava, dok Flatpak stvara spremnik odvojen od sustava i radi s velikim skupovima vremena izvođenja, ne pružajući pakete kao ovisnosti, već standardne okruženja sustava (na primjer, sve biblioteke potrebne za rad GNOME ili KDE programa).

Uz standardno okruženje sustava (runtime), instalirano putem posebnog repozitorija, isporučuju se dodatne ovisnosti (bundle) potrebne za rad aplikacije. Ukupno, runtime i bundle čine punjenje spremnika, unatoč činjenici da je runtime instaliran odvojeno i povezan s nekoliko spremnika odjednom, što vam omogućuje da izbjegnete dupliciranje sistemskih datoteka zajedničkih spremnicima. Jedan sustav može imati instalirano nekoliko različitih runtimea (GNOME, KDE) ili nekoliko verzija istog runtimea (GNOME 3.40, GNOME 3.42). Spremnik s aplikacijom kao ovisnošću koristi vezanje samo na određeno vrijeme izvođenja, ne uzimajući u obzir pojedinačne pakete koji čine vrijeme izvođenja. Svi elementi koji nedostaju pakirani su izravno s aplikacijom. Kada se formira spremnik, sadržaj vremena izvođenja se montira kao /usr particija, a paket se montira u /app direktorij.

Spremnici vremena izvođenja i aplikacije izgrađeni su korištenjem OSTree tehnologije, u kojoj se slika atomski ažurira iz repozitorija sličnog Gitu, što omogućuje primjenu metoda kontrole verzija na komponente distribucije (na primjer, možete brzo vratiti sustav na prethodno stanje). RPM paketi se prevode u OSTree repozitorij pomoću posebnog rpm-ostree sloja. Odvojena instalacija i ažuriranje paketa unutar radnog okruženja nije podržano, sustav se ažurira ne na razini pojedinačnih komponenti, već kao cjelina, atomski mijenjajući svoje stanje. Pruža alate za postupnu primjenu ažuriranja, eliminirajući potrebu za potpunom zamjenom slike sa svakim ažuriranjem.

Generirano izolirano okruženje potpuno je neovisno o korištenoj distribuciji i, uz odgovarajuće postavke paketa, nema pristup datotekama i procesima korisnika ili glavnog sustava, te ne može izravno pristupiti opremi, s izuzetkom izlaza putem DRI-ja i poziva mrežnom podsustavu. Organizacija grafičkog izlaza i ulaza implementirana je pomoću Wayland protokola ili putem X11 socket forwardinga. Interakcija s vanjskim okruženjem temelji se na DBus sustavu poruka i posebnom Portals API-ju.

Za izolaciju se koristi sloj Bubblewrap i tradicionalne tehnologije virtualizacije Linux spremnika, temeljene na korištenju cgroups, namespaces, Seccomp i SELinux. PulseAudio se koristi za izlaz zvuka. U tom slučaju može se onemogućiti izolacija, koju koriste programeri mnogih popularnih paketa kako bi dobili puni pristup datotečnom sustavu i svim uređajima u sustavu. Na primjer, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity i VLC dolaze s ograničenim načinom izolacije koji ostavlja puni pristup početnom direktoriju.

Ako su paketi s pristupom početnom direktoriju ugroženi, unatoč prisutnosti oznake "sandboxed" u opisu paketa, napadač samo treba promijeniti datoteku ~/.bashrc da bi izvršio svoj kod. Posebno pitanje je kontrola promjena paketa i povjerenje u graditelje paketa, koji često nisu povezani s glavnim projektom ili distribucijama.

Izvor: opennet.ru

Dodajte komentar