Paglabas ng Bubblewrap 0.8, mga layer para sa paglikha ng mga sandboxed na kapaligiran

Available ang isang release ng mga tool para sa pag-aayos ng gawain ng mga nakahiwalay na kapaligiran Bubblewrap 0.8, kadalasang ginagamit upang paghigpitan ang mga indibidwal na aplikasyon ng mga walang pribilehiyong user. Sa pagsasagawa, ang Bubblewrap ay ginagamit ng proyekto ng Flatpak bilang isang layer upang ihiwalay ang mga application na inilunsad mula sa mga pakete. Ang code ng proyekto ay nakasulat sa C at ipinamamahagi sa ilalim ng lisensya ng LGPLv2+.

Para sa paghihiwalay, ginagamit ang tradisyonal na Linux container virtualization na teknolohiya, batay sa paggamit ng mga cgroup, namespace, Seccomp at SELinux. Para magsagawa ng mga privileged operation para mag-configure ng container, inilunsad ang Bubblewrap na may mga root rights (isang executable file na may flag ng suid) at pagkatapos ay i-reset ang mga pribilehiyo pagkatapos masimulan ang container.

Ang pag-activate ng mga namespace ng user sa system ng namespace, na nagbibigay-daan sa iyong gamitin ang iyong sariling hiwalay na hanay ng mga identifier sa mga container, ay hindi kinakailangan para sa operasyon, dahil hindi ito gumagana bilang default sa maraming mga distribusyon (Ang Bubblewrap ay nakaposisyon bilang isang limitadong pagpapatupad ng suid ng isang subset ng mga kakayahan ng user namespaces - upang ibukod ang lahat ng user at process identifiers mula sa kapaligiran, maliban sa kasalukuyan, ang CLONE_NEWUSER at CLONE_NEWPID mode ang ginagamit). Para sa karagdagang proteksyon, ang mga programang isinagawa sa ilalim ng Bubblewrap ay inilulunsad sa PR_SET_NO_NEW_PRIVS mode, na nagbabawal sa pagkuha ng mga bagong pribilehiyo, halimbawa, kung ang setuid na bandila ay naroroon.

Ang paghihiwalay sa antas ng file system ay nagagawa sa pamamagitan ng paglikha ng bagong mount namespace bilang default, kung saan ang isang walang laman na root partition ay nilikha gamit ang tmpfs. Kung kinakailangan, ang mga panlabas na partisyon ng FS ay nakakabit sa partisyon na ito sa mode na "mount β€”bind" (halimbawa, kapag inilunsad gamit ang opsyong "bwrap β€”ro-bind /usr /usr", ang /usr partition ay ipinapasa mula sa pangunahing system sa read-only mode). Ang mga kakayahan ng network ay limitado sa pag-access sa loopback interface na may network stack isolation sa pamamagitan ng CLONE_NEWNET at CLONE_NEWUTS na mga flag.

Ang pangunahing pagkakaiba sa katulad na proyekto ng Firejail, na gumagamit din ng setuid launch model, ay ang sa Bubblewrap, ang layer ng paggawa ng lalagyan ay kinabibilangan lamang ng mga kinakailangang minimum na kakayahan, at lahat ng mga advanced na function na kinakailangan para sa pagpapatakbo ng mga graphical na application, pakikipag-ugnayan sa desktop at mga kahilingan sa pag-filter. sa Pulseaudio, inilipat sa bahagi ng Flatpak at naisakatuparan pagkatapos ma-reset ang mga pribilehiyo. Ang Firejail, sa kabilang banda, ay pinagsasama ang lahat ng nauugnay na function sa isang executable file, na nagpapahirap sa pag-audit at pagpapanatili ng seguridad sa tamang antas.

Sa bagong release:

  • Idinagdag ang opsyong "--disable-userns" para i-disable ang paggawa ng sarili nitong nested user namespace sa sandbox environment.
  • Idinagdag ang opsyong "--assert-userns-disabled" upang tingnan kung ang isang umiiral na espasyo ng user ID ay ginagamit kapag ginagamit ang opsyong "--disable-userns."
  • Ang nilalaman ng impormasyon ng mga mensahe ng error na nauugnay sa hindi pagpapagana ng mga setting ng CONFIG_SECCOMP at CONFIG_SECCOMP_FILTER sa kernel ay nadagdagan.

Pinagmulan: opennet.ru

Magdagdag ng komento