Release van Flatpak 1.12.0 op zichzelf staand pakketsysteem

Er is een nieuwe stabiele tak van de Flatpak 1.12 toolkit gepubliceerd, die een systeem biedt voor het bouwen van op zichzelf staande pakketten die niet gebonden zijn aan specifieke Linux-distributies en draaien in een speciale container die de applicatie isoleert van de rest van het systeem. Ondersteuning voor het uitvoeren van Flatpak-pakketten wordt geboden voor Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux en Ubuntu. Flatpak-pakketten zijn opgenomen in de Fedora-repository en worden ondersteund door de native GNOME-applicatiebeheerder.

Belangrijkste innovaties in de Flatpak 1.12-branche:

  • Verbeterd beheer van geneste sandbox-omgevingen die worden gebruikt in het flatpak-pakket met de client voor de Steam-gamebezorgservice. In geneste sandboxen is het maken van afzonderlijke hiërarchieën van de mappen /usr en /app toegestaan, wat in Steam wordt gebruikt om games te starten in een aparte container met een eigen /usr-partitie, geïsoleerd van de omgeving met de Steam-client.
  • Alle pakketinstanties met dezelfde applicatie-ID (app-ID) delen de mappen /tmp en $XDG_RUNTIME_DIR. Optioneel kunt u met behulp van de vlag “--allow=per-app-dev-shm” het gebruik van de gedeelde map /dev/shm inschakelen.
  • Verbeterde ondersteuning voor Text User Interface (TUI)-toepassingen zoals gdb.
  • Een snellere implementatie van de opdracht “ostree prune” is toegevoegd aan het build-update-repo-hulpprogramma, geoptimaliseerd voor het werken met repository's in archiefmodus.
  • De kwetsbaarheid CVE-2021-41133 bij de implementatie van het portalmechanisme, die verband houdt met het gebrek aan blokkering van nieuwe systeemaanroepen gerelateerd aan het mounten van partities in de seccomp-regels, is opgelost. Door het beveiligingslek kon de applicatie een geneste sandbox creëren om de ‘portal’-verificatiemechanismen te omzeilen die worden gebruikt om de toegang tot bronnen buiten de container te organiseren.

    Als resultaat hiervan kan een aanvaller, door het uitvoeren van mount-gerelateerde systeemaanroepen, het sandbox-isolatiemechanisme omzeilen en volledige toegang krijgen tot de inhoud van de hostomgeving. Het beveiligingslek kan alleen worden misbruikt in pakketten die applicaties directe toegang bieden tot AF_UNIX-sockets, zoals die worden gebruikt door Wayland, Pipewire en pipewire-pulse. In release 1.12.0 was de kwetsbaarheid nog niet volledig geëlimineerd, dus werd update 1.12.1 meteen op de hielen gezet.

Laten we u eraan herinneren dat Flatpak applicatieontwikkelaars in staat stelt de distributie van hun programma's die niet zijn opgenomen in de standaard distributierepository's te vereenvoudigen door één universele container voor te bereiden zonder voor elke distributie afzonderlijke assemblages te maken. Voor veiligheidsbewuste gebruikers kunt u met Flatpak een twijfelachtige applicatie in een container uitvoeren, waarbij u alleen toegang krijgt tot de netwerkfuncties en gebruikersbestanden die aan de applicatie zijn gekoppeld. Voor gebruikers die geïnteresseerd zijn in nieuwe producten, kunt u met Flatpak de nieuwste test- en stabiele releases van applicaties installeren zonder dat u wijzigingen aan het systeem hoeft aan te brengen. Flatpak-pakketten zijn bijvoorbeeld gebouwd voor LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, enz.

Om de pakketgrootte te verkleinen, bevat het alleen applicatiespecifieke afhankelijkheden, en zijn de basissysteem- en grafische bibliotheken (GTK-, Qt-, GNOME- en KDE-bibliotheken, enz.) ontworpen als plug-in standaard runtime-omgevingen. Het belangrijkste verschil tussen Flatpak en Snap is dat Snap de componenten van de hoofdsysteemomgeving en isolatie gebruikt op basis van het filteren van systeemaanroepen, terwijl Flatpak een container creëert die gescheiden is van het systeem en werkt met grote runtimesets, waarbij pakketten niet als afhankelijkheden worden aangeboden, maar standaard de systeemomgevingen (bijvoorbeeld alle bibliotheken die nodig zijn voor de werking van GNOME- of KDE-programma's).

Naast de standaard systeemomgeving (runtime), geïnstalleerd via een speciale repository, worden aanvullende afhankelijkheden (bundel) geleverd die nodig zijn voor de werking van de applicatie. In totaal vormen runtime en bundel de vulling van de container, ondanks het feit dat runtime afzonderlijk wordt geïnstalleerd en aan meerdere containers tegelijk is gekoppeld, waardoor u het dupliceren van systeembestanden kunt voorkomen die gebruikelijk zijn bij containers. Op één systeem kunnen meerdere verschillende runtimes geïnstalleerd zijn (GNOME, KDE) of meerdere versies van dezelfde runtime (GNOME 3.40, GNOME 3.42). Een container met een applicatie als afhankelijkheid gebruikt alleen een binding aan een specifieke runtime, zonder rekening te houden met de individuele pakketten waaruit de runtime bestaat. Alle ontbrekende elementen worden direct bij de applicatie verpakt. Wanneer een container wordt gevormd, wordt de runtime-inhoud aangekoppeld als de /usr-partitie, en wordt de bundel aangekoppeld in de map /app.

De runtime- en applicatiecontainers zijn gebouwd met behulp van OSTree-technologie, waarbij de afbeelding atomair wordt bijgewerkt vanuit een Git-achtige repository, waardoor versiebeheermethoden kunnen worden toegepast op de distributiecomponenten (u kunt het systeem bijvoorbeeld snel terugdraaien naar een vorige staat). RPM-pakketten worden vertaald naar de OSTree-repository met behulp van een speciale rpm-ostree-laag. Afzonderlijke installatie en update van pakketten binnen de werkomgeving wordt niet ondersteund; het systeem wordt niet bijgewerkt op het niveau van individuele componenten, maar als geheel, waardoor de staat ervan atomair verandert. Biedt tools om updates stapsgewijs toe te passen, waardoor het niet meer nodig is om de image bij elke update volledig te vervangen.

De gegenereerde geïsoleerde omgeving is volledig onafhankelijk van de gebruikte distributie en heeft bij de juiste pakketinstellingen geen toegang tot bestanden en processen van de gebruiker of het hoofdsysteem, en kan ook niet direct toegang krijgen tot de apparatuur, met uitzondering van uitvoer via DRI en oproepen naar het netwerksubsysteem. Grafische uitvoer en invoerorganisatie worden geïmplementeerd met behulp van het Wayland-protocol of via X11-socket forwarding. Interactie met de externe omgeving is gebaseerd op het DBus-berichtensysteem en een speciale Portals API.

Voor isolatie wordt gebruik gemaakt van de Bubblewrap-laag en traditionele Linux-containervirtualisatietechnologieën, gebaseerd op het gebruik van cgroups, naamruimten, Seccomp en SELinux. PulseAudio wordt gebruikt om geluid uit te voeren. In dit geval kan isolatie worden uitgeschakeld, wat door de ontwikkelaars van veel populaire pakketten wordt gebruikt om volledige toegang te krijgen tot het bestandssysteem en alle apparaten in het systeem. GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity en VLC worden bijvoorbeeld geleverd met een beperkte isolatiemodus die volledige toegang tot de thuismap geeft.

Als pakketten met toegang tot de homedirectory in gevaar komen, ondanks de aanwezigheid van het label “sandboxed” in de pakketbeschrijving, hoeft de aanvaller alleen het bestand ~/.bashrc te wijzigen om zijn code uit te voeren. Een apart probleem is de controle over wijzigingen aan pakketten en het vertrouwen in pakketbouwers, die vaak niet geassocieerd zijn met het hoofdproject of de distributies.

Bron: opennet.ru

Voeg een reactie