Këtu është publikuar dega e re stabile e mjetit Flatpak 1.12, i cili ofron një sistem për ndërtimin e paketave të vetë-mjaftueshme, të pa lidhura me shpërndarjet e caktuara Linux dhe që ekzekutohen në një kontejner të veçantë, i cili izolon aplikacionin nga pjesa tjetër e sistemit. Përkrahja për ekzekutimin e pakove Flatpak është siguruar për Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux dhe Ubuntu. Paketat me Flatpak janë përfshirë në magazinën e Fedora-s dhe mbështeten në programin standard të menaxhimit të aplikacioneve GNOME.
Novitetet kryesore në degën Flatpak 1.12:
- Menaxhimi i ambienteve sandbox të përfshira, të përdorura në paketat flatpak me klientin për shërbimin e shpërndarjes së lojrave Steam, është përmirësuar. Në sandbox-in e përfshirë është lejuar krijimi i hierarkive të veçanta të katalogëve /usr dhe /app, të cilat përdoren në Steam për të nisur lojrat në një kontejner të veçantë me sektorin e tij /usr, i izoluar nga ambienti me klientin Steam.
- NĂ« tĂ« gjitha shembujt e pakove me tĂ« njĂ«jtin identifikues aplikacioni (app-ID) Ă«shtĂ« siguruar ndarja e katalogĂ«ve /tmp dhe $XDG_RUNTIME_DIR. Opcionalisht, me ndihmĂ«n e flamurit "âallow=per-app-dev-shm", mund tĂ« aktivizoni pĂ«rdorimin e katalogut tĂ« pĂ«rbashkĂ«t /dev/shm.
- Përmirësimi i mbështetjes për aplikacionet me ndërfaqe përdoruesi me tekst (TUI), të tilla si gdb.
- U shtua një zbatim më të shpejtë të komandës "ostree prune" në utilitarin build-update-repo, i optimizuar për të punuar me magazinat në modin arkiv.
- U hoq një cenueshmëri CVE-2021-41133 në zbatimin e mekanizmit të portave, e cila lidhet me mungesën në rregullat seccomp për bllokimin e thirrjeve të reja sistemore që lidhen me montimin e sektorëve. Cenuemshmëria lejonte aplikacionit të krijonte një sandbox të përfshirë për të kaluar mekanizmat e verifikimit "portave", të cilat përdoren për të organizuar aksesin në burimet jashtë kontejnerit.
Si rezultat, një sulmues përmes ekzekutimit të thirrjeve të sistemit të lidhura me montimin mund të kalonte mekanizmin e izolimit sandbox dhe të merrte qasje të plotë në përmbajtjen e ambientit amë. Shfrytëzimi i cenueshmërisë është i mundur vetëm në pakot që ofrojnë aplikacioneve qasje të drejtpërdrejtë në socketet AF_UNIX, të cilat, për shembull, përdoren në Wayland, Pipewire dhe pipewire-pulse. Në publikimin 1.12.0, cenueshmëria nuk u hoq plotësisht, prandaj menjëherë pas asaj u publikua një përditësim 1.12.1.
Të kujtojmë se Flatpak ofron zhvilluesve të aplikacioneve mundësinë për të thjeshtësuar shpërndarjen e programeve të tyre që nuk janë pjesë e depozitave standarde të distribucioneve përmes përgatitjes së një konteineri universitar pa krijimin e grumbujve të veçantë për çdo distribucion. Përdoruesve që janë të shqetësuar për sigurinë, Flatpak u lejon të ekzekutojnë një aplikacion të dyshimtë në një konteiner, duke ofruar qasje vetëm në funksionet e rrjetit dhe skedarët e përdoruesit që lidhen me aplikacionin. Përdoruesve që janë të interesuar për risitë, Flatpak u lejon të instalojnë versionet më të reja dhe stabile të aplikacioneve pa pasur nevojë të bëjnë ndërrime në sistem. Për shembull, paketat Flatpak janë ndërtuar për LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio etj.
Për të zvogëluar madhësinë e paketës, ajo përfshin vetëm varësitë specifike për aplikacionin, ndërsa bibliotekat bazë sistemore dhe grafike (GTK, Qt, bibliotekat GNOME dhe KDE etj.) janë të organizuara si runtime-ambiente tipike të lidhura. Dallimi kryesor mes Flatpak dhe Snap është se Snap përdor komponetë të mjedisit kryesor të sistemit dhe izolimin në bazë të filtrimit të thirrjeve sistemore, ndërsa Flatpak krijon një konteiner të veçantë nga sistemi dhe operon me grupe të mëdha runtime, duke ofruar si varësi jo paketa, por njëmend ambiente sistemore tipike (për shembull, të gjitha bibliotekat e nevojshme për të punuar me programet GNOME ose KDE).
Përveç mjedisit të zakonshëm sistemor (runtime), i cili instalohet përmes një repository të veçantë, ofrohen varësi shtesë (bundle) të nevojshme për funksionimin e aplikacionit. Në total, runtime dhe bundle formojnë përmbajtjen e kontejnerit, ndërkohë që runtime instalohet veçmas dhe lidhët menjëherë me disa kontejnerë, gjë që eviton riprodhimin e skedarëve sistemorë të përbashkët për kontejnerët. Në një sistem mund të instalohen disa runtime të ndryshme (GNOME, KDE) ose disa versione të një runtime (GNOME 3.40, GNOME 3.42). Një kontejner me aplikacionin si varësi përdor lidhjen vetëm me një runtime të caktuar, pa marrë parasysh paketat e veçanta nga të cilat përbëhet runtime. Të gjithë elementët e munguar paketohen drejtpërdrejt me aplikacionin. Kur formohet kontejneri, përmbajtja e runtime montohen si një ndarje /usr, dhe bundle montohen në drejtorinë /app.
Përmbajtja e runtime dhe kontejnerëve të aplikacioneve formohet duke përdorur teknologjinë OSTree, e cila lejon përditësimin atomik të imazhit nga një depo si Git, duke mundësuar përdorimin e metodave të kontrollit të versioneve për komponentët e distribuimit (për shembull, mund të kthehet shpejt sistemi në një gjendje të kaluar). Paketat RPM transkriptohen në depo OSTree përmes një shtrese të veçantë rpm-ostree. Instalimi dhe përditësimi i paketave brenda mjedisit të punës nuk mbështetet, sistemi përditësohet jo në nivelin e komponenteve të veçanta, por plotësisht, duke ndryshuar atomikisht gjendjen e tij. Ofrohen mjete për aplikimin incremental të përditësimeve, duke hequr nevojën për zëvendësimin e plotë të imazhit për çdo përditësim.
Mjedisi i formuar i izoluar është plotësisht i pavarur nga distribuimi që përdoret dhe me konfigurimet e duhura të paketës nuk ka qasje në skedarët dhe proceset e përdoruesit ose të sistemit themelor, nuk mund të qaset drejtpërdrejt në pajisjet, përveç daljes përmes DRI, dhe aksesit në nën-sistemin rrjetor. Dalja e grafikës dhe organizimi i hyrjes realizohen përmes protokollit Wayland ose përmes kalimit të soketeve X11. Ndërveprimi me mjedisin e jashtëm është i bazuar në sistemin e shkëmbimit të mesazheve DBus dhe një API të veçantë Portals.
Për izolimin përdoret një shtresë Bubblewrap dhe teknologjitë tradicionale të virtualizimit të kontejnerëve për Linux, të bazuara në përdorimin e cgroups, hapësirave të emrave (namespaces), Seccomp dhe SELinux. Për daljen e zërit përdoret PulseAudio. Megjithatë, izolimi mund të çaktivizohet, të cilin e përdorin zhvilluesit e shumë paketeve të njohura për të fituar qasje të plotë në FSH dhe në të gjitha pajisjet në sistem. Për shembull, paketet GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity dhe VLC vijnë me një mod të kufizuar të izolimit që lë akses të plotë në katalogun e shtëpisë.
Në rastin e një kompromentimi të paketeve me qasje në katalogun e shtëpisë, pavarësisht nga prania në përshkrimin e paketës të etiketës "sandboxed", sulmuesi për të ekzekutuar kodin e tij mjafton të ndryshojë skedarin ~/ .bashrc. Një çështje tjetër është kontrolli mbi ndryshimet e bëra në paketa dhe besimi te ndërtuesit e paketeve, të cilët shpesh nuk janë të lidhur me projektin kryesor ose shpërndarjet.
Burimi: opennet.ru
