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

Yra įrankių, skirtų izoliuotų aplinkų darbui organizuoti, leidimas Bubblewrap 0.8, 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:

  • Добавлена опция «—disable-userns» отключающая создание в sandbox-окружении своего вложенного пространства идентификаторов пользователей (user namespace).
  • Добавлена опция «—assert-userns-disabled» для проверки, что при использовании опции » —disable-userns» задействовано существующее пространство идентификаторов пользователей.
  • Повышена информативность сообщений об ошибках, связанных с отключением в ядре настроек CONFIG_SECCOMP и CONFIG_SECCOMP_FILTER.

Šaltinis: opennet.ru

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