Išleistas Bubblewrap 0.6, sluoksnis, skirtas sukurti izoliuotą aplinką

Yra įrankių, skirtų izoliuotų aplinkų darbui organizuoti, leidimas Bubblewrap 0.6, paprastai naudojamas apriboti atskiras neprivilegijuotų vartotojų programas. Praktiškai „Bubblewrap“ projekte „Flatpak“ naudoja kaip sluoksnį, skirtą atskirti programas, paleistas iš paketų. Projekto kodas parašytas C kalba ir platinamas pagal LGPLv2+ licenciją.

Išskyrimui naudojamos tradicinės Linux konteinerių virtualizacijos technologijos, pagrįstos cgroups, namespaces, Seccomp ir SELinux naudojimu. Norint atlikti privilegijuotas sudėtinio rodinio konfigūravimo operacijas, „Bubblewrap“ paleidžiama su root teisėmis (vykdomasis failas su suid vėliava), o po to, kai konteineris inicijuojamas, privilegijos nustatomos iš naujo.

Vartotojų vardų erdvių aktyvinimas vardų erdvės sistemoje, leidžiantis naudoti atskirą identifikatorių rinkinį konteineriuose, nėra būtinas, kad veiktų, nes daugelyje paskirstymų jis neveikia pagal nutylėjimą (Bubblewrap yra ribotas tinkamas vartotojų vardų erdvių galimybių poaibis – norint pašalinti iš aplinkos visus vartotojų ir procesų identifikatorius, išskyrus dabartinį, naudojami režimai CLONE_NEWUSER ir CLONE_NEWPID). Siekiant papildomos apsaugos, programos, vykdomos naudojant Bubblewrap, paleidžiamos PR_SET_NO_NEW_PRIVS režimu, kuris neleidžia įgyti naujų privilegijų, pavyzdžiui, jei yra setuid vėliavėlė.

Išskyrimas failų sistemos lygiu atliekamas pagal numatytuosius nustatymus sukuriant naują prijungimo vardų erdvę, kurioje tuščias šakninis skaidinys sukuriamas naudojant tmpfs. Jei reikia, išoriniai FS skaidiniai prijungiami prie šio skaidinio „mount —bind“ režimu (pavyzdžiui, kai paleidžiama naudojant parinktį „bwrap —ro-bind /usr /usr“, /usr skaidinys persiunčiamas iš pagrindinės sistemos tik skaitymo režimu). Tinklo galimybės apsiriboja prieiga prie grįžtamojo ryšio sąsajos su tinklo dėklo izoliacija naudojant CLONE_NEWNET ir CLONE_NEWUTS vėliavėles.

Pagrindinis skirtumas nuo panašaus „Firejail“ projekto, kuriame taip pat naudojamas „setuid“ paleidimo modelis, yra tas, kad „Bubblewrap“ konteinerio kūrimo sluoksnyje yra tik būtinos minimalios galimybės ir visos išplėstinės funkcijos, reikalingos grafinėms programoms paleisti, sąveikai su darbalaukiu ir filtravimo užklausoms. į Pulseaudio, perkeltas į Flatpak pusę ir įvykdytas po to, kai privilegijos buvo iš naujo nustatytos. Kita vertus, „Firejail“ sujungia visas susijusias funkcijas viename vykdomajame faile, todėl sunku tikrinti ir išlaikyti saugumą tinkamu lygiu.

Naujame leidime:

  • Pridėtas „Meson“ surinkimo sistemos palaikymas. Kūrimo naudojant „Autotools“ palaikymas kol kas išliko, bet bus pašalintas būsimame leidime.
  • Įdiegta parinktis „--add-seccomp“, kad būtų galima pridėti daugiau nei vieną seccomp programą. Pridėtas įspėjimas, kad jei dar kartą nurodysite parinktį "--seccomp", bus taikomas tik paskutinis parametras.
  • Pagrindinė šaka git saugykloje buvo pervadinta į pagrindinę.
  • Pridėtas dalinis REUSE specifikacijos palaikymas, kuris suvienija licencijos ir autorių teisių informacijos nustatymo procesą. Daugelyje kodo failų yra pridėtos SPDX-License-Identifier antraštės. Vadovaujantis REUSE gairėmis, lengviau automatiškai nustatyti, kuri licencija taikoma kurioms programos kodo dalims.
  • Pridėta komandinės eilutės argumentų skaitiklio (argc) vertės tikrinimas ir įdiegtas avarinis išėjimas, jei skaitiklis yra nulis. Šis pakeitimas padeda blokuoti saugos problemas, kylančias dėl netinkamo perduotų komandinės eilutės argumentų, pvz., CVE-2021-4034 Polkit, tvarkymo.

Šaltinis: opennet.ru

Добавить комментарий