Ang Bubblewrap, isang tool para sa paglikha ng mga application sa mga nakahiwalay na kapaligiran

Ang Bubblewrap ay isang tool ano ang gumagana upang ayusin ang gawaing sandbox sa Linux at tumakbo sa antas ng application na hindi pribilehiyo ng gumagamit. Sa pagsasagawa, ang Bubblewrap ay ginagamit ng proyekto ng Flatpak bilang isang intermediate layer upang ihiwalay ang mga application na inilunsad mula sa mga software packages.

Para sa paghihiwalay, gumagamit ang Linux ng mga teknolohiyang virtualization ng mga tradisyunal na lalagyan batay sa paggamit ng mga cgroups, namespaces, Seccomp at SELinux. Upang maisagawa ang mga pribilehiyong pagpapatakbo upang mai-configure ang isang lalagyan, ang Bubblewrap ay nagsimula sa mga pribilehiyo ng ugat (isang maipapatupad na file na may suid na bandila), na sinusundan ng isang pag-reset ng pribilehiyo pagkatapos na ma-initialize ang lalagyan.

Hindi na kailangang paganahin ang mga namespace ng gumagamit sa system, na pinapayagan kang gamitin ang iyong sariling hanay ng mga id sa mga lalagyan, bilang bilang default hindi ito gumagana sa maraming mga pamamahagi.

Tungkol sa Bubblewrap

Ang Bubblewrap ay nakaposisyon bilang isang limitadong pagpapatupad ng suida mula sa subset ng mga pag-andar ng namespace ng gumagamit upang ibukod ang lahat ng mga gumagamit at iproseso ang mga id mula sa kapaligiran maliban sa kasalukuyang isa, gamitin ang mga mode CLONE_NEWUSER at CLONE_NEWPID.

Para sa karagdagang proteksyon, ang mga programang tumatakbo sa Bubblewrap ay nagsisimula sa mode PR_SET_NO_NEW_PRIVS, na nagbabawal ng mga bagong pribilehiyo, halimbawa, kasama ang setuid flag.

Ang paghihiwalay sa antas ng file system ay ginagawa sa pamamagitan ng paglikha, bilang default, isang bagong mount namespace, kung saan ang isang walang laman na pagkahati ng ugat ay nilikha gamit ang mga tmpfs.

Kung kinakailangan, ang mga panlabas na seksyon ng FS ay nakakabit sa seksyong ito sa «bundok –bind»(Halimbawa, nagsisimula sa pagpipilian«bwrap –ro-bind / usr / usr', Ang seksyon / usr ay ipinapasa mula sa host sa read-only mode).

Ang mga kakayahan sa network ay limitado sa pag-access sa interface ng loopback baligtarin ng paghihiwalay ng stack ng network sa pamamagitan ng mga tagapagpahiwatig CLONE_NEWNET at CLONE_NEWUTS.

Ang pangunahing pagkakaiba sa katulad na proyekto ng Firejail, na gumagamit din ng setuid launcher, ay iyon sa Bubblewrap, ang layer ng lalagyan ay nagsasama lamang ng minimum na kinakailangang mga tampok at lahat ng mga advanced na pagpapaandar na kinakailangan upang maglunsad ng mga grapikong aplikasyon, makipag-ugnay sa desktop, at i-filter ang mga tawag sa Pulseaudio, ay dadalhin sa gilid ng Flatpak at patakbuhin pagkatapos i-reset ang mga pribilehiyo.

Ang Firejail, sa kabilang banda, ay pinagsasama ang lahat ng mga kaugnay na pag-andar sa isang maipapatupad na file, na kumplikado sa iyong pag-audit at pinapanatili ang seguridad sa tamang antas.

Karaniwang gumagana ang Bubblewrap sa pamamagitan ng lumilikha ng isang walang laman na mount namespace sa isang pansamantalang file system na masisira pagkatapos makumpleto ang pagproseso ng sandbox.

Sa pamamagitan ng paggamit ng mga switch, maaaring buuin ng gumagamit ang nais na kapaligiran ng filesystem sa loob ng mount namespace sa pamamagitan ng pag-mount sa link ng mga nais na direktoryo mula sa host system.

Bubble wrap 0.4.0

Sa kasalukuyan ang Bubblewrap ay nasa bersyon na 0.4.0 na kamakailan ay pinakawalan. Ang code ng proyekto ay nakasulat sa C at ibinahagi sa ilalim ng lisensya ng LGPLv2 +.

Ang bagong bersyon ay kapansin-pansin para sa pagpapatupad ng suporta para sa pagsali sa mga namespace at proseso mayroon nang mga gumagamit (pid namespaces).

Ang mga watawat na "–userns", "–userns2" at "–pidns" ay naidagdag upang makontrol ang koneksyon ng mga namespaces.

Ang tampok na ito ay hindi gagana sa setuid mode at nangangailangan ng isang hiwalay na mode na maaaring gumana nang walang mga pribilehiyo ng ugat, ngunit nangangailangan ng mga namespace ng gumagamit na paganahin sa system (hindi pinagana bilang default sa Debian at RHEL / CentOS) at hindi ibinubukod ang posibilidad na magsamantala ng potensyal natitirang mga kahinaan para sa gilid ng mga paghihigpit na "mga namespace ng gumagamit".

Sa mga bagong tampok ng Bubblewrap 0.4, ang posibilidad ng pagbuo ng musl C library sa halip na glibc ay sinusunod din, at suporta para sa pag-save ng impormasyon ng namespace sa isang file ng mga istatistika sa format na JSON.

Ang code ng Bubblewrap, pati na rin ang dokumentasyon tungkol dito, ay maaaring konsulta sa Github, ang link ay ito.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.