Рэліз сістэмы самадастатковых пакетаў Flatpak 1.12.0

Апублікавана новая стабільная галінка інструментара Flatpak 1.12, які дае сістэму для зборкі самадастатковых пакетаў, не прывязаных да канкрэтных дыстрыбутываў Linux і выкананых у спецыяльным кантэйнеры, ізалявалым прыкладанне ад астатняй сістэмы. Падтрымка выканання Flatpak-пакетаў забяспечана для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux і Ubuntu. Пакеты з Flatpak уключаны ў рэпазітар Fedora і падтрымліваюцца ў штатнай праграме кіравання прыкладаннямі GNOME.

Ключавыя навіны ў галінцы Flatpak 1.12:

  • Палепшана кіраванне укладзенымі sandbox-акружэннямі, якія выкарыстоўваюцца ва flatpak-пакеце з кліентам для сэрвісу дастаўкі гульняў Steam. Ва ўкладзеных sandbox-ах дазволена стварэнне асобных іерархій каталогаў /usr і /app, што выкарыстоўваецца ў Steam для запуску гульняў у асобным кантэйнеры са сваёй часткай /usr, ізаляваным ад асяроддзя з кліентам Steam.
  • Ва ўсіх экзэмплярах пакетаў з аднолькавым ідэнтыфікатарам прыкладання (app-ID) забяспечана сумеснае выкарыстанне каталогаў /tmp і $XDG_RUNTIME_DIR. Апцыянальна пры дапамозе сцяга «—allow=per-app-dev-shm» можна ўключыць выкарыстанне агульнага каталога /dev/shm.
  • Палепшана падтрымка прыкладанняў з тэкставым інтэрфейсам карыстальніка (TUI), такіх як gdb.
  • Ва ўтыліту build-update-repo дададзена хутчэйшая рэалізацыя каманды «ostree prune», аптымізаваная для працы з рэпазітарамі, змешчанымі ў рэжыме архіва.
  • Ухіленая ўразлівасць CVE-2021-41133 у рэалізацыі механізму парталаў, звязаная з адсутнасцю ў правілах seccomp блакавання новых сістэмных выклікаў, звязаных з мантаваннем частак. Уразлівасць дазваляла з дадаткам стварыць укладзены sandbox для абыходу механізмаў верыфікацыі «парталаў», якія прымяняюцца для арганізацыі доступу да рэсурсаў па-за кантэйнерам.

    У выніку, атакавалы праз выкананне злучаных з мантаваннем сістэмных выклікаў мог абыйсці механізм sandbox-ізаляцыі ў атрымаць поўны доступ да змесціва хост-акружэнні. Эксплуатацыя ўразлівасці магчымая толькі ў пакетах, якія прадстаўляюць прыкладанням прамы доступ да сокетаў AF_UNIX, якія, напрыклад, выкарыстоўваюцца ў Wayland, Pipewire і pipewire-pulse. У выпуску 1.12.0 уразлівасць была ўхіленая не цалкам, таму па гарачых слядах выпушчана абнаўленне 1.12.1.

Нагадаем, што распрацоўнікам прыкладанняў Flatpak дае магчымасць спрасціць распаўсюджванне сваіх праграм, якія не ўваходзяць у штатныя рэпазітары дыстрыбутываў за кошт падрыхтоўкі аднаго ўніверсальнага кантэйнера без фарміравання асобных зборак для кожнага дыстрыбутыва. Карыстачам, якія клапоцяцца аб бяспецы, Flatpak дазваляе выканаць выклікае сумнеў прыкладанне ў кантэйнеры, падаўшы доступ толькі да сеткавых функцый і файлаў карыстальніка, звязаным з дадаткам. Карыстачам, якія цікавяцца навінкамі, Flatpak дазваляе ўсталяваць самыя свежыя тэставыя і стабільныя выпускі прыкладанняў без неабходнасці занясення змен у сістэму. Напрыклад, Flatpak-пакеты збіраюцца для LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio і г.д.

Для памяншэння памеру пакета ён уключае толькі спецыфічныя для прыкладання залежнасці, а базавыя сістэмныя і графічныя бібліятэкі (GTK, Qt, бібліятэкі GNOME і KDE і да т.п.) аформлены ў выглядзе якія падключаюцца тыпавых runtime-акружэнняў. Ключавое адрозненне Flatpak ад Snap заключаецца ў тым, што Snap выкарыстоўвае кампаненты асяроддзя асноўнай сістэмы і ізаляцыю на аснове фільтрацыі сістэмных выклікаў, у той час як Flatpak стварае асобны ад сістэмы кантэйнер і аперуе буйнымі runtime-наборамі, падаючы ў якасці залежнасцяў не пакеты, а тыпавыя. сістэмныя асяроддзі (напрыклад, усе бібліятэкі, неабходныя для працы праграм GNOME або KDE).

Апроч тыпавога сістэмнага асяроддзя (runtime), усталёўванага праз адмысловы рэпазітар, пастаўляюцца дадатковыя залежнасці (bundle), патрабаваныя для працы прыкладання. У суме runtime і bundle утвораць начынне кантэйнера, пры тым, што runtime усталёўваецца асобна і прывязваецца адразу да некалькіх кантэйнераў, што дазваляе абыйсціся без дублявання агульных для кантэйнераў сістэмных файлаў. У адной сістэме можа быць усталявана некалькі розных runtime (GNOME, KDE) ці некалькі версій аднаго runtime (GNOME 3.40, GNOME 3.42). Кантэйнер з дадаткам у якасці залежнасці выкарыстоўвае прывязку толькі да вызначанага runtime, без уліку асобных пакетаў, з якіх складаецца runtime. Усе адсутнічаюць элементы пакуюцца непасрэдна разам з дадаткам. Пры фармаванні кантэйнера змесціва runtime мантуецца як частка /usr, а bundle мантуецца ў дырэкторыю /app.

Начынне runtime і кантэйнераў прыкладанняў фармуецца з выкарыстаннем тэхналогіі OSTree, пры якой выява атамарна абнаўляецца з Git-падобнага сховішча, які дазваляе ўжываць метады версійнага кантролю да кампанентаў дыстрыбутыва (напрыклад, можна хутка адкаціць сістэму да мінулага стану). RPM-пакеты транслююцца ў рэпазітар OSTree пры дапамозе спецыяльнай праслойкі rpm-ostree. Асобная ўсталёўка і абнаўленне пакетаў усярэдзіне працоўнага асяроддзя не падтрымліваецца, сістэма абнаўляецца не на ўзроўні асобных кампанентаў, а цалкам, атамарна змяняючы свой стан. Прадстаўляюцца сродкі для інкрыментальнага прымянення абнаўленняў, якія пазбаўляюць ад неабходнасці поўнай замены выявы пры кожным абнаўленні.

Фарміраванае ізаляванае асяроддзе цалкам незалежна ад выкарыстоўванага дыстрыбутыва і пры належных наладах пакета не мае доступу да файлаў і працэсам карыстача ці асноўнай сістэмы, не можа напроста звяртацца да абсталявання, за выключэннем высновы праз DRI, і зваротаў да сеткавай падсістэмы. Выснова графікі і арганізацыя ўводу рэалізаваны пры дапамозе пратакола Wayland або праз пракід сокета X11. Узаемадзеянне з навакольным асяроддзем пабудавана на аснове сістэмы абмену паведамленнямі DBus і спецыяльнага API Portals.

Для ізаляцыі выкарыстоўваецца праслойка Bubblewrap і традыцыйныя для Linux тэхналогіі кантэйнернай віртуалізацыі, заснаваныя на выкарыстанні cgroups, прастор імёнаў (namespaces), Seccomp і SELinux. Для вываду гуку прымяняецца PulseAudio. Пры гэтым ізаляцыя можа быць адключаная, чым карыстаюцца распрацоўнікі шматлікіх папулярных пакетаў для атрымання поўнага доступу да ФС і ўсім прыладам у сістэме. Напрыклад, з абмежаваным рэжымам ізаляцыі, якія пакідаюць поўны доступ да хатняга каталога, пастаўляюцца пакеты GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity і VLC.

У выпадку кампраметацыі пакетаў з доступам да хатняга каталога, нягледзячы на ​​наяўнасць у апісанні пакета пазнакі «sandboxed», які атакуе для выканання свайго кода досыць змяніць файл ~/.bashrc. Асобным пытаннем з'яўляецца кантроль за занясеннем змен у пакеты і давер да зборшчыкаў пакетаў, якія часта не злучаны з асноўным праектам або дыстрыбутывамі.

Крыніца: opennet.ru

Дадаць каментар