A Flatpak 1.12.0 önálló csomagrendszer kiadása

Megjelent a Flatpak 1.12-es eszközkészlet új, stabil ága, amely olyan önálló csomagok felépítésére biztosít rendszert, amelyek nem kötődnek meghatározott Linux disztribúciókhoz, és egy speciális konténerben futnak, amely elszigeteli az alkalmazást a rendszer többi részétől. A Flatpak csomagok futtatását támogatja az Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux és Ubuntu. A Flatpak csomagok megtalálhatók a Fedora tárolóban, és a natív GNOME alkalmazáskezelő támogatja őket.

Főbb újítások a Flatpak 1.12 ágban:

  • A flatpak csomagban használt beágyazott sandbox környezetek továbbfejlesztett kezelése az ügyféllel a Steam játékszállítási szolgáltatáshoz. A beágyazott sandboxokban az /usr és /app könyvtárak külön hierarchiáinak létrehozása megengedett, ami a Steamben a játékok indítására szolgál egy külön konténerben, saját /usr partícióval, a környezettől elkülönítve a Steam klienssel.
  • Az azonos alkalmazásazonosítóval (app-ID) rendelkező összes csomagpéldány megosztja a /tmp és a $XDG_RUNTIME_DIR könyvtárat. Opcionálisan a „--allow=per-app-dev-shm” jelző használatával engedélyezheti a /dev/shm megosztott könyvtár használatát.
  • Továbbfejlesztett támogatás a szöveges felhasználói felület (TUI) alkalmazásokhoz, mint például a gdb.
  • Az „ostree prune” parancs gyorsabb megvalósítása hozzáadásra került a build-update-repo segédprogramhoz, amely a lerakatokkal való archiválási módban való munkára optimalizált.
  • A portálmechanizmus megvalósításában a CVE-2021-41133 számú biztonsági rést, amely a partíciók beillesztésével kapcsolatos új rendszerhívások seccomp-szabályokban való blokkolásának hiányával kapcsolatos, kijavították. A biztonsági rés lehetővé tette az alkalmazás számára, hogy beágyazott homokozót hozzon létre, hogy megkerülje a „portál” ellenőrzési mechanizmusokat, amelyek a tárolón kívüli erőforrásokhoz való hozzáférés megszervezésére szolgálnak.

    Ennek eredményeként a támadó a csatlakoztatással kapcsolatos rendszerhívások végrehajtásával megkerülheti a sandbox elkülönítési mechanizmust, és teljes hozzáférést kaphat a gazdagép környezet tartalmához. A biztonsági rést csak olyan csomagokban lehet kihasználni, amelyek az alkalmazások számára közvetlen hozzáférést biztosítanak az AF_UNIX foglalatokhoz, például a Wayland, a Pipewire és a pipewire-pulse által használt csomagokhoz. Az 1.12.0-s kiadásban a sérülékenységet nem szüntették meg teljesen, így az 1.12.1-es frissítés forrón jelent meg.

Emlékeztetünk arra, hogy a Flatpak lehetővé teszi az alkalmazásfejlesztők számára, hogy egyszerűsítsék a szabványos terjesztési tárolókban nem szereplő programjaik elosztását azáltal, hogy egyetlen univerzális tárolót készítenek anélkül, hogy minden disztribúcióhoz külön összeállításokat hoznának létre. A biztonságtudatos felhasználók számára a Flatpak lehetővé teszi egy megkérdőjelezhető alkalmazás futtatását egy konténerben, amely csak az alkalmazáshoz kapcsolódó hálózati funkciókhoz és felhasználói fájlokhoz biztosít hozzáférést. Az új termékek iránt érdeklődő felhasználók számára a Flatpak lehetővé teszi az alkalmazások legújabb teszt- és stabil kiadásainak telepítését anélkül, hogy módosítani kellene a rendszeren. Például a Flatpak csomagok a LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio stb. számára készültek.

A csomag méretének csökkentése érdekében csak az alkalmazás-specifikus függőségeket tartalmazza, az alapvető rendszer- és grafikus könyvtárakat (GTK, Qt, GNOME és KDE könyvtárak stb.) pedig beépülő szabványos futási környezetként tervezték. A Flatpak és a Snap közötti fő különbség az, hogy a Snap a fő rendszerkörnyezet összetevőit és a rendszerhívások szűrésen alapuló elkülönítést használja, míg a Flatpak a rendszertől különálló konténert hoz létre, és nagy futásidejű készletekkel működik, nem függőségekként, hanem szabványos csomagokat biztosítva. rendszerkörnyezetek (például a GNOME vagy KDE programok működéséhez szükséges összes könyvtár).

A speciális tárolón keresztül telepített szabványos rendszerkörnyezeten (futásidejű) túlmenően az alkalmazás működéséhez szükséges további függőségek (csomagok) is rendelkezésre állnak. Összességében a futásidő és a köteg képezi a tároló feltöltését, annak ellenére, hogy a futási idő külön van telepítve, és egyszerre több tárolóhoz van kötve, ami lehetővé teszi, hogy elkerülje a tárolókban megszokott rendszerfájlok megkettőzését. Egy rendszeren több különböző futtatókörnyezet (GNOME, KDE) vagy ugyanannak a futási környezetnek több verziója is telepítve lehet (GNOME 3.40, GNOME 3.42). Egy alkalmazást függőségként tartalmazó tároló csak egy adott futási környezethez használ kötést, anélkül, hogy figyelembe venné a futási környezetet alkotó egyedi csomagokat. Minden hiányzó elem közvetlenül az alkalmazással együtt van csomagolva. Egy tároló létrehozásakor a futásidejű tartalom /usr partícióként, a köteg pedig az /app könyvtárba kerül.

A futtatókörnyezet- és alkalmazástárolók OSTree technológiával épülnek fel, amelyben a lemezkép atomszerűen frissül egy Git-szerű tárolóból, ami lehetővé teszi a verziókezelési módszerek alkalmazását a terjesztési összetevőkre (például gyorsan visszaállíthatja a rendszert egy előző állapot). Az RPM-csomagokat egy speciális rpm-ostree réteg segítségével fordítják le az OSTree tárolóba. A munkakörnyezeten belül a csomagok külön telepítése és frissítése nem támogatott, a rendszer nem az egyes komponensek szintjén, hanem egészében frissül, atomosan megváltoztatva az állapotát. Eszközöket biztosít a frissítések fokozatos alkalmazásához, így nincs szükség a kép teljes cseréjére minden frissítésnél.

Az előállított izolált környezet teljesen független a használt disztribúciótól, és a csomag megfelelő beállításai mellett nem fér hozzá a felhasználó vagy a fő rendszer fájljaihoz és folyamataihoz, nem fér hozzá közvetlenül a berendezéshez, kivéve a DRI-n keresztüli kimenetet, és a hálózati alrendszer hívásait. A grafikus kimenet és a bemenet szervezése a Wayland protokoll használatával vagy az X11 socket továbbítással valósul meg. A külső környezettel való interakció a DBus üzenetküldő rendszeren és egy speciális Portals API-n alapul.

Az elkülönítéshez a Bubblewrap réteget és a hagyományos Linux konténervirtualizációs technológiákat használjuk, amelyek a cgroupok, névterek, Seccomp és SELinux használatán alapulnak. A PulseAudio hangkibocsátásra szolgál. Ebben az esetben az elkülönítés letiltható, amelyet számos népszerű csomag fejlesztői használnak, hogy teljes hozzáférést kapjanak a fájlrendszerhez és a rendszer összes eszközéhez. Például a GIMP, a VSCodium, a PyCharm, az Octave, az Inkscape, az Audacity és a VLC korlátozott elkülönítési móddal rendelkezik, amely teljes hozzáférést biztosít a kezdőkönyvtárhoz.

Ha a kezdőkönyvtárhoz hozzáféréssel rendelkező csomagokat feltörik, a „sandboxed” címke ellenére a csomagleírásban a támadónak csak a ~/.bashrc fájlt kell módosítania a kód végrehajtásához. Külön kérdés a csomagok változásainak ellenőrzése és a csomagkészítőkbe vetett bizalom, amelyek gyakran nem kapcsolódnak a fő projekthez vagy disztribúciókhoz.

Forrás: opennet.ru

Hozzászólás