Izdanje Flatpak 1.12.0 samostalnog paketnog sistema

Objavljena je nova stabilna grana Flatpak 1.12 alata, koja pruža sistem za pravljenje samostalnih paketa koji nisu vezani za specifične Linux distribucije i koji se pokreću u posebnom kontejneru koji izoluje aplikaciju od ostatka sistema. Podrška za pokretanje Flatpak paketa je obezbeđena za Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux i Ubuntu. Flatpak paketi su uključeni u Fedora spremište i podržani su od strane izvornog upravitelja GNOME aplikacija.

Ključne inovacije u grani Flatpak 1.12:

  • Poboljšano upravljanje ugniježđenim sandbox okruženjima koja se koriste u flatpak paketu s klijentom za uslugu isporuke igara Steam. U ugniježđenim sandboxovima dozvoljeno je kreiranje zasebnih hijerarhija direktorija /usr i /app, što se u Steamu koristi za pokretanje igara u zasebnom kontejneru s vlastitom /usr particijom, izoliranom od okruženja sa Steam klijentom.
  • Sve instance paketa sa istim identifikatorom aplikacije (app-ID) dijele direktorije /tmp i $XDG_RUNTIME_DIR. Opciono, koristeći oznaku “--allow=per-app-dev-shm”, možete omogućiti korištenje dijeljenog direktorija /dev/shm.
  • Poboljšana podrška za aplikacije Text User Interface (TUI) kao što je gdb.
  • Brža implementacija naredbe “ostree prune” dodata je uslužnom programu build-update-repo, optimiziranom za rad sa spremištima u arhivskom modu.
  • Ispravljena je ranjivost CVE-2021-41133 u implementaciji mehanizma portala, povezana sa nedostatkom blokiranja novih sistemskih poziva vezanih za montiranje particija u seccomp pravilima. Ranjivost je omogućila aplikaciji da kreira ugniježđeni sandbox kako bi zaobišao mehanizme verifikacije „portala“ koji se koriste za organiziranje pristupa resursima izvan kontejnera.

    Kao rezultat toga, napadač, izvodeći sistemske pozive vezane za montiranje, može zaobići mehanizam izolacije sandbox-a i dobiti potpuni pristup sadržaju okruženja domaćina. Ranjivost se može iskoristiti samo u paketima koji pružaju aplikacijama direktan pristup AF_UNIX utičnicama, kao što su oni koje koriste Wayland, Pipewire i pipewire-pulse. U izdanju 1.12.0, ranjivost nije u potpunosti eliminisana, tako da je ažuriranje 1.12.1 objavljeno odmah za petama.

Podsjetimo da Flatpak omogućava programerima aplikacija da pojednostave distribuciju svojih programa koji nisu uključeni u standardna distribucijska spremišta pripremajući jedan univerzalni kontejner bez kreiranja zasebnih sklopova za svaku distribuciju. Za korisnike koji su svjesni sigurnosti, Flatpak vam omogućava da pokrenete upitnu aplikaciju u kontejneru, dajući pristup samo mrežnim funkcijama i korisničkim datotekama povezanim s aplikacijom. Za korisnike zainteresovane za nove proizvode, Flatpak omogućava instaliranje najnovijih testnih i stabilnih izdanja aplikacija bez potrebe za izmenama u sistemu. Na primjer, Flatpak paketi su napravljeni za LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, itd.

Da bi se smanjila veličina paketa, uključuje samo zavisnosti specifične za aplikaciju, a osnovne sistemske i grafičke biblioteke (GTK, Qt, GNOME i KDE biblioteke, itd.) su dizajnirane kao plug-in standardna okruženja za izvršavanje. Ključna razlika između Flatpaka i Snapa je u tome što Snap koristi komponente glavnog sistemskog okruženja i izolaciju zasnovanu na filtriranju sistemskih poziva, dok Flatpak kreira kontejner odvojen od sistema i radi sa velikim runtime setovima, pružajući ne pakete kao zavisnosti, već standardne one sistemske sredine (na primjer, sve biblioteke potrebne za rad GNOME ili KDE programa).

Pored standardnog sistemskog okruženja (runtime), instaliranog preko posebnog spremišta, isporučuju se i dodatne zavisnosti (bundle) potrebne za rad aplikacije. Ukupno vrijeme izvođenja i bundle čine punjenje kontejnera, uprkos činjenici da je vrijeme izvođenja instalirano odvojeno i vezano za nekoliko kontejnera odjednom, što vam omogućava da izbjegnete dupliciranje sistemskih datoteka zajedničkih za kontejnere. Jedan sistem može imati instalirano nekoliko različitih runtimea (GNOME, KDE) ili nekoliko verzija istog vremena izvršavanja (GNOME 3.40, GNOME 3.42). Kontejner sa aplikacijom kao zavisnošću koristi vezivanje samo za određeno vreme izvođenja, bez uzimanja u obzir pojedinačnih paketa koji čine vreme izvođenja. Svi elementi koji nedostaju se pakuju direktno uz aplikaciju. Kada se formira kontejner, sadržaj vremena izvođenja se montira kao /usr particija, a bundle se montira u /app direktorijum.

Kontejneri za vrijeme izvođenja i aplikacije izgrađeni su korištenjem OSTree tehnologije, u kojoj se slika atomski ažurira iz Git spremišta, što omogućava primjenu metoda kontrole verzija na komponente distribucije (na primjer, možete brzo vratiti sistem na prethodno stanje). RPM paketi se prevode u OSTree repozitorij koristeći poseban rpm-ostree sloj. Nije podržana odvojena instalacija i ažuriranje paketa unutar radnog okruženja, sistem se ažurira ne na nivou pojedinačnih komponenti, već u cjelini, atomski mijenjajući svoje stanje. Pruža alate za postepenu primjenu ažuriranja, eliminirajući potrebu za potpunom zamjenom slike sa svakim ažuriranjem.

Generirano izolirano okruženje je potpuno neovisno o korištenoj distribuciji i, uz odgovarajuće postavke paketa, nema pristup datotekama i procesima korisnika ili glavnog sistema, ne može direktno pristupiti opremi, osim izlaza preko DRI, i pozive u mrežni podsistem. Organizacija grafičkog izlaza i ulaza implementirana je korištenjem Wayland protokola ili putem prosljeđivanja X11 socketa. Interakcija sa eksternim okruženjem zasniva se na DBus sistemu za razmenu poruka i posebnom Portals API-ju.

Za izolaciju se koriste Bubblewrap sloj i tradicionalne Linux tehnologije virtuelizacije kontejnera, zasnovane na korišćenju cgroups, imenskih prostora, Seccomp i SELinux. PulseAudio se koristi za izlaz zvuka. U ovom slučaju, izolacija se može onemogućiti, što koriste programeri mnogih popularnih paketa kako bi dobili puni pristup sistemu datoteka i svim uređajima u sistemu. Na primjer, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity i VLC dolaze s ograničenim načinom izolacije koji ostavlja potpuni pristup početnom direktoriju.

Ako su paketi s pristupom matičnom direktoriju kompromitovani, uprkos prisutnosti oznake “sandboxed” u opisu paketa, napadač treba samo promijeniti ~/.bashrc datoteku 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