Release av Flatpak 1.12.0 fristående paketsystem

En ny stabil gren av verktygssatsen Flatpak 1.12 har publicerats, som tillhandahåller ett system för att bygga fristående paket som inte är bundna till specifika Linux-distributioner och körs i en speciell behållare som isolerar applikationen från resten av systemet. Stöd för att köra Flatpak-paket tillhandahålls för Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux och Ubuntu. Flatpak-paket ingår i Fedora-förvaret och stöds av den inbyggda GNOME-applikationshanteraren.

Viktiga innovationer i Flatpak 1.12-grenen:

  • Förbättrad hantering av kapslade sandlådemiljöer som används i flatpak-paketet med klienten för Steam-spelleveranstjänsten. I kapslade sandlådor tillåts skapandet av separata hierarkier för katalogerna /usr och /app, som används i Steam för att starta spel i en separat behållare med sin egen /usr-partition, isolerad från miljön med Steam-klienten.
  • Alla paketinstanser med samma applikationsidentifierare (app-ID) delar katalogerna /tmp och $XDG_RUNTIME_DIR. Om du vill, med flaggan "--allow=per-app-dev-shm" kan du aktivera användningen av den delade katalogen /dev/shm.
  • Förbättrat stöd för textanvändargränssnitt (TUI) applikationer som gdb.
  • En snabbare implementering av kommandot "ostree prune" har lagts till verktyget build-update-repo, optimerat för att arbeta med arkiv i arkivläge.
  • Sårbarheten CVE-2021-41133 i implementeringen av portalmekanismen, förknippad med avsaknaden av blockering av nya systemanrop relaterade till montering av partitioner i seccomp-reglerna, har åtgärdats. Sårbarheten gjorde det möjligt för applikationen att skapa en kapslad sandlåda för att kringgå "portal"-verifieringsmekanismerna som används för att organisera åtkomst till resurser utanför behållaren.

    Som ett resultat kan en angripare, genom att utföra monteringsrelaterade systemanrop, kringgå sandlådeisoleringsmekanismen och få full åtkomst till innehållet i värdmiljön. Sårbarheten kan endast utnyttjas i paket som ger applikationer direkt åtkomst till AF_UNIX-sockets, som de som används av Wayland, Pipewire och pipewire-pulse. I release 1.12.0 eliminerades inte sårbarheten helt, så uppdatering 1.12.1 släpptes i hälarna.

Låt oss påminna dig om att Flatpak tillåter applikationsutvecklare att förenkla distributionen av sina program som inte ingår i standarddistributionsförråden genom att förbereda en universell behållare utan att skapa separata sammansättningar för varje distribution. För säkerhetsmedvetna användare låter Flatpak dig köra en tvivelaktig applikation i en behållare, och ger endast åtkomst till nätverksfunktionerna och användarfilerna som är associerade med applikationen. För användare som är intresserade av nya produkter låter Flatpak dig installera de senaste test- och stabila versionerna av applikationer utan att behöva göra ändringar i systemet. Till exempel är Flatpak-paket byggda för LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, etc.

För att minska paketstorleken inkluderar det bara applikationsspecifika beroenden, och de grundläggande system- och grafikbiblioteken (GTK, Qt, GNOME och KDE bibliotek, etc.) är designade som plug-in standard körtidsmiljöer. Den viktigaste skillnaden mellan Flatpak och Snap är att Snap använder komponenterna i huvudsystemmiljön och isolering baserat på filtrering av systemanrop, medan Flatpak skapar en container separat från systemet och arbetar med stora runtime-uppsättningar, och tillhandahåller inte paket som beroenden, utan standard. ens systemmiljöer (till exempel alla bibliotek som behövs för driften av GNOME- eller KDE-program).

Förutom standardsystemmiljön (runtime), installerad genom ett speciellt arkiv, tillhandahålls ytterligare beroenden (paket) som krävs för driften av applikationen. Totalt utgör runtime och bunt fyllningen av behållaren, trots att runtime är installerad separat och knuten till flera behållare samtidigt, vilket gör att du slipper duplicera systemfiler som är gemensamma för behållare. Ett system kan ha flera olika körtider installerade (GNOME, KDE) eller flera versioner av samma körtid (GNOME 3.40, GNOME 3.42). En behållare med en applikation som beroende använder en bindning endast till en specifik körtid, utan att ta hänsyn till de individuella paketen som utgör körtiden. Alla saknade element paketeras direkt med applikationen. När en behållare bildas monteras runtime-innehållet som /usr-partitionen och paketet monteras i /app-katalogen.

Runtime- och applikationsbehållarna är byggda med OSTree-teknologi, där bilden uppdateras atomärt från ett Git-liknande arkiv, vilket tillåter versionskontrollmetoder att tillämpas på distributionskomponenterna (du kan till exempel snabbt rulla tillbaka systemet till en tidigare tillstånd). RPM-paket översätts till OSTree-förvaret med hjälp av ett speciellt rpm-ostree-lager. Separat installation och uppdatering av paket inom arbetsmiljön stöds inte, systemet uppdateras inte på nivån för enskilda komponenter, utan som en helhet, och ändrar dess tillstånd atomärt. Tillhandahåller verktyg för att tillämpa uppdateringar stegvis, vilket eliminerar behovet av att helt ersätta bilden med varje uppdatering.

Den genererade isolerade miljön är helt oberoende av distributionen som används och har, med korrekta paketinställningar, inte tillgång till filer och processer för användaren eller huvudsystemet, och kan inte direkt komma åt utrustningen, med undantag för utdata via DRI och samtal till nätverkets delsystem. Grafikutmatning och inmatningsorganisation implementeras med hjälp av Wayland-protokollet eller via X11-socket-vidarebefordran. Interaktion med den externa miljön är baserad på meddelandesystemet DBus och en speciell Portals API.

För isolering används Bubblewrap-lagret och traditionell Linux-containervirtualiseringsteknik, baserad på användningen av cgroups, namespaces, Seccomp och SELinux. PulseAudio används för att mata ut ljud. I det här fallet kan isolering inaktiveras, vilket används av utvecklarna av många populära paket för att få full tillgång till filsystemet och alla enheter i systemet. Till exempel kommer GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity och VLC med ett begränsat isoleringsläge som ger full åtkomst till hemkatalogen.

Om paket med åtkomst till hemkatalogen äventyras, trots närvaron av "sandboxed"-etiketten i paketbeskrivningen, behöver angriparen bara ändra ~/.bashrc-filen för att exekvera sin kod. En separat fråga är kontrollen av ändringar av paket och förtroende för paketbyggare, som ofta inte är associerade med huvudprojektet eller distributionerna.

Källa: opennet.ru

Lägg en kommentar