Lansarea sistemului de pachete autonome Flatpak 1.12.0

A fost publicată o nouă ramură stabilă a setului de instrumente Flatpak 1.12, care oferă un sistem pentru construirea de pachete autonome care nu sunt legate de distribuții Linux specifice și rulează într-un container special care izolează aplicația de restul sistemului. Suport pentru rularea pachetelor Flatpak este oferit pentru Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux și Ubuntu. Pachetele Flatpak sunt incluse în depozitul Fedora și sunt acceptate de managerul de aplicații GNOME nativ.

Inovații cheie în ramura Flatpak 1.12:

  • Gestionare îmbunătățită a mediilor imbricate cu nisip utilizate în pachetul flatpak cu clientul pentru serviciul de livrare a jocurilor Steam. În sandbox-urile imbricate, este permisă crearea de ierarhii separate ale directoarelor /usr și /app, care este folosită în Steam pentru a lansa jocuri într-un container separat cu propria sa partiție /usr, izolat de mediu cu clientul Steam.
  • Toate instanțele de pachet cu același identificator de aplicație (app-ID) partajează directoarele /tmp și $XDG_RUNTIME_DIR. Opțional, folosind indicatorul „--allow=per-app-dev-shm”, puteți activa utilizarea directorului partajat /dev/shm.
  • Suport îmbunătățit pentru aplicațiile Text User Interface (TUI), cum ar fi gdb.
  • O implementare mai rapidă a comenzii „ostree prune” a fost adăugată la utilitarul build-update-repo, optimizat pentru lucrul cu depozitele în modul arhivă.
  • Vulnerabilitatea CVE-2021-41133 în implementarea mecanismului portalului, asociată cu lipsa blocării noilor apeluri de sistem legate de montarea partițiilor în regulile seccomp, a fost remediată. Vulnerabilitatea a permis aplicației să creeze un sandbox imbricat pentru a ocoli mecanismele de verificare „portal” care sunt folosite pentru a organiza accesul la resursele din afara containerului.

    Drept urmare, un atacator, prin efectuarea de apeluri de sistem legate de montare, ar putea ocoli mecanismul de izolare sandbox și poate obține acces deplin la conținutul mediului gazdă. Vulnerabilitatea poate fi exploatată numai în pachete care oferă aplicațiilor acces direct la socket-urile AF_UNIX, cum ar fi cele utilizate de Wayland, Pipewire și pipewire-pulse. În versiunea 1.12.0, vulnerabilitatea nu a fost complet eliminată, așa că actualizarea 1.12.1 a fost lansată imediat.

Să vă reamintim că Flatpak permite dezvoltatorilor de aplicații să simplifice distribuția programelor lor care nu sunt incluse în depozitele de distribuție standard prin pregătirea unui container universal fără a crea ansambluri separate pentru fiecare distribuție. Pentru utilizatorii conștienți de securitate, Flatpak vă permite să rulați o aplicație discutabilă într-un container, oferind acces numai la funcțiile de rețea și fișierele utilizator asociate cu aplicația. Pentru utilizatorii interesați de produse noi, Flatpak vă permite să instalați cele mai recente versiuni de testare și versiuni stabile ale aplicațiilor fără a fi nevoie să faceți modificări sistemului. De exemplu, pachetele Flatpak sunt construite pentru LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio etc.

Pentru a reduce dimensiunea pachetului, acesta include numai dependențe specifice aplicației, iar bibliotecile de bază de sistem și grafice (biblioteci GTK, Qt, GNOME și KDE etc.) sunt proiectate ca medii de rulare standard de plug-in. Diferența cheie dintre Flatpak și Snap este că Snap utilizează componentele mediului de sistem principal și izolarea bazată pe filtrarea apelurilor de sistem, în timp ce Flatpak creează un container separat de sistem și funcționează cu seturi mari de rulare, oferind nu pachete ca dependențe, ci standard. mediile de sistem (de exemplu, toate bibliotecile necesare pentru funcționarea programelor GNOME sau KDE).

Pe lângă mediul de sistem standard (runtime), instalat printr-un depozit special, sunt furnizate dependențe suplimentare (bundle) necesare pentru funcționarea aplicației. În total, runtime și pachetul formează umplerea containerului, în ciuda faptului că runtime este instalat separat și legat de mai multe containere simultan, ceea ce vă permite să evitați duplicarea fișierelor de sistem comune containerelor. Un sistem poate avea instalate mai multe runtime diferite (GNOME, KDE) sau mai multe versiuni ale aceluiași runtime (GNOME 3.40, GNOME 3.42). Un container cu o aplicație ca dependență folosește o legătură doar cu un anumit timp de execuție, fără a lua în considerare pachetele individuale care alcătuiesc timpul de execuție. Toate elementele lipsă sunt ambalate direct cu aplicația. Când se formează un container, conținutul runtime este montat ca partiție /usr, iar pachetul este montat în directorul /app.

Containerele de rulare și aplicații sunt construite folosind tehnologia OSTree, în care imaginea este actualizată atomic dintr-un depozit asemănător Git, ceea ce permite metodelor de control al versiunii să fie aplicate componentelor de distribuție (de exemplu, puteți rula rapid înapoi sistemul la un starea anterioară). Pachetele RPM sunt traduse în depozitul OSTree folosind un strat special rpm-ostree. Instalarea și actualizarea separată a pachetelor în mediul de lucru nu este acceptată; sistemul este actualizat nu la nivelul componentelor individuale, ci în ansamblu, schimbându-și atomic starea. Oferă instrumente pentru aplicarea progresivă a actualizărilor, eliminând nevoia de a înlocui complet imaginea cu fiecare actualizare.

Mediul izolat generat este complet independent de distribuția utilizată și, cu setări adecvate ale pachetului, nu are acces la fișierele și procesele utilizatorului sau sistemul principal, nu poate accesa direct echipamentul, cu excepția ieșirii prin DRI, și apeluri către subsistemul de rețea. Ieșirea grafică și organizarea intrărilor sunt implementate folosind protocolul Wayland sau prin redirecționarea socket-ului X11. Interacțiunea cu mediul extern se bazează pe sistemul de mesagerie DBus și pe un portal API special.

Pentru izolare, se utilizează stratul Bubblewrap și tehnologiile tradiționale de virtualizare a containerelor Linux, bazate pe utilizarea cgroups, namespaces, Seccomp și SELinux. PulseAudio este folosit pentru a scoate sunet. În acest caz, izolarea poate fi dezactivată, care este folosită de dezvoltatorii multor pachete populare pentru a obține acces deplin la sistemul de fișiere și la toate dispozitivele din sistem. De exemplu, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity și VLC vin cu un mod de izolare limitat care lasă acces deplin la directorul principal.

Dacă pachetele cu acces la directorul principal sunt compromise, în ciuda prezenței etichetei „sandbox” în descrierea pachetului, atacatorul trebuie doar să schimbe fișierul ~/.bashrc pentru a-și executa codul. O problemă separată este controlul modificărilor aduse pachetelor și încrederea în constructorii de pachete, care adesea nu sunt asociați cu proiectul sau distribuțiile principale.

Sursa: opennet.ru

Adauga un comentariu