A fost publicat un nou ramură stabilă a instrumentului Flatpak 1.12, care oferă un sistem pentru construirea de pachete autonome, care nu depind de distribuții Linux specifice și care sunt executate într-un container special, izolând aplicația de restul sistemului. Suportul pentru rularea pachetelor Flatpak este asigurat pentru Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux și Ubuntu. Pachetele Flatpak sunt incluse în repository-ul Fedora și sunt gestionate de aplicația standard de gestionare a aplicațiilor GNOME.
Noutăți cheie în ramura Flatpak 1.12:
- A fost îmbunătățită gestionarea sandbox-urilor încorporate utilizate în pachetul flatpak cu clientul pentru serviciul de livrare a jocurilor Steam. În sandbox-urile încorporate, este permisă crearea unor ierarhii separate de directoare /usr și /app, utilizate în Steam pentru a rula jocuri într-un container separat cu propriul său sistem /usr, izolat de mediu clientului Steam.
- În toate instanțele pachetelor cu același identificator de aplicație (app-ID) este asigurat partajarea directoarelor /tmp și $XDG_RUNTIME_DIR. Opțional, prin utilizarea flag-ului «--allow=per-app-dev-shm», se poate activa utilizarea unui director comun /dev/shm.
- A fost îmbunătățit suportul pentru aplicațiile cu interfață de utilizator text (TUI), precum gdb.
- Utilitarul build-update-repo a fost completat cu o implementare mai rapidă a comenzii «ostree prune», optimizată pentru lucrul cu repozitorii în modul de arhivă.
- A fost remediată vulnerabilitatea CVE-2021-41133 în implementarea mecanismului portalurilor, legată de lipsa de restricții în regulile seccomp pentru a bloca apelurile sistemului noi legate de montarea partițiilor. Vulnerabilitatea permitea aplicației să creeze un sandbox încorporat pentru a ocoli mecanismele de verificare «portalurilor», care sunt folosite pentru a organiza accesul la resurse din afara containerului.
Astfel, un atacator prin executarea apelurilor sistemului legate de montare putea ocoli mecanismul de izolare sandbox și să obțină acces complet la conținutul mediu gazdă. Exploatarea vulnerabilității este posibilă doar în pachetele care oferă aplicațiilor acces direct la socket-urile AF_UNIX, care sunt folosite în Wayland, Pipewire și pipewire-pulse. În versiunea 1.12.0, vulnerabilitatea nu a fost complet remediată, așa că a fost lansată o actualizare 1.12.1 imediat după.
Reamintim că dezvoltatorii de aplicații Flatpak au posibilitatea de a simplifica distribuția programelor lor, care nu sunt incluse în repositoarele standard ale distribuțiilor, prin pregătirea unui singur container universal, fără a crea pachete separate pentru fiecare distribuție. Utilizatorilor preocupați de securitate, Flatpak le permite să ruleze aplicații discutabile într-un container, oferind acces doar la funcționalitățile de rețea și fișierele utilizatorului asociate aplicației. Utilizatorii interesați de noutăți pot instala cele mai recente versiuni de teste și stabile ale aplicațiilor fără a fi necesare modificări în sistem. De exemplu, pachetele Flatpak sunt disponibile pentru LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio etc.
Pentru a reduce dimensiunea pachetului, acesta include doar dependențele specifice aplicației, în timp ce bibliotecile de bază sistemice și grafice (GTK, Qt, bibliotecile GNOME și KDE etc.) sunt prezentate sub formă de runtime-uri tipice care pot fi conectate. Principala diferență dintre Flatpak și Snap este că Snap folosește componentele mediului sistemului de bază și izolare bazată pe filtrarea apelurilor sistemului, în timp ce Flatpak creează un container separat de sistem și operează cu seturi mari de runtime-uri, oferind ca dependențe nu pachete, ci medii sistemice tipice (de exemplu, toate bibliotecile necesare pentru funcționarea aplicațiilor GNOME sau KDE).
Pe lângă mediul sistemic standard (runtime), care este instalat printr-un repository special, sunt furnizate dependențe suplimentare (bundle) necesare pentru funcționarea aplicației. Împreună, runtime și bundle formează conținutul containerului, având în vedere că runtime este instalat separat și este legat de mai multe containere, ceea ce permite evitarea duplicării fișierelor sistemice comune pentru containere. Într-un singur sistem pot fi instalate mai multe runtime-uri diferite (GNOME, KDE) sau mai multe versiuni ale unui singur runtime (GNOME 3.40, GNOME 3.42). Containerul cu aplicația, ca dependență, folosește legătura doar cu un anumit runtime, fără a lua în considerare pachetele individuale din care este compus runtime-ul. Toate elementele lipsă sunt incluse direct împreună cu aplicația. La formarea containerului, conținutul runtime-ului este montat ca partajare /usr, iar bundle-ul este montat în directorul /app.
Conținutul runtime-ului și al containerelor de aplicații este generat folosind tehnologia OSTree, în care imaginea este actualizată atomic dintr-un depozit similar Git, permițând aplicarea metodelor de control al versiunilor asupra componentelor distribuției (de exemplu, se poate reveni rapid la o stare anterioară a sistemului). Pachetele RPM sunt transmise în depozitul OSTree printr-un strat special numit rpm-ostree. Instalarea și actualizarea separată a pachetelor în cadrul mediului de lucru nu este suportată, sistemul este actualizat nu la nivelul componentelor individuale, ci în întregime, schimbând atomic starea sa. Sunt furnizate unelte pentru aplicarea incrementală a actualizărilor, eliminând necesitatea înlocuirii complete a imaginii la fiecare actualizare.
Mediul izolat format este complet independent de distribuția utilizată și, cu setările corecte ale pachetului, nu are acces la fișierele și procesele utilizatorului sau ale sistemului de bază, nu poate accesa direct hardware-ul, cu excepția afișării prin DRI și a apelurilor către subsistemul de rețea. Afișarea graficii și organizarea intrării se realizează prin protocolul Wayland sau prin redirecționarea socket-ului X11. Interacțiunea cu mediul extern este construită pe baza sistemului de mesagerie DBus și a unui API special Portals.
Pentru izolare se utilizează o strat de Bubblewrap și tehnologiile tradiționale de virtualizare a containerelor specifice Linux, bazate pe utilizarea cgroups, spațiilor de nume (namespaces), Seccomp și SELinux. Pentru redarea sunetului se folosește PulseAudio. Totuși, izolația poate fi dezactivată, ceea ce este folosit de dezvoltatorii multor pachete populare pentru a obține acces complet la FS și la toate dispozitivele din sistem. De exemplu, pachetele GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity și VLC sunt livrate cu un mod de izolare limitat, care lasă acces complet la directorul home.
În caz de compromitere a pachetelor cu acces la directorul home, în ciuda etichetei „sandboxed” din descrierea pachetului, atacatorului îi este suficient să modifice fișierul ~/ .bashrc pentru a-și executa codul. O întrebare separată este controlul asupra modificărilor pachetelor și încrederea în constructorii de pachete, care adesea nu sunt asociați cu proiectul principal sau cu distribuțiile.
Sursa: opennet.ro
