bagong release ng toolkit , na idinisenyo upang ayusin ang gawain ng mga nakahiwalay na kapaligiran sa Linux at tumatakbo sa antas ng 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 lisensyado sa ilalim 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 gumamit ng sarili mong 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 mga identifier ng proseso mula sa kapaligiran, maliban sa kasalukuyan, ang CLONE_NEWUSER at CLONE_NEWPID mode ay ginagamit). Para sa karagdagang proteksyon, executable under control
Ang mga programa ng Bubblewrap ay inilunsad sa PR_SET_NO_NEW_PRIVS mode, na nagbabawal sa pagkuha ng mga bagong pribilehiyo, halimbawa, kung naroroon ang setuid flag.
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.
Pangunahing pagkakaiba mula sa isang katulad na proyekto , na gumagamit din ng isang setuid na modelo ng paglulunsad, ay na 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 pag-filter ng mga tawag sa Pulseaudio ay outsourced na Flatpak at isinasagawa. 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 .
Ang bagong release ay kapansin-pansin para sa pagpapatupad ng suporta para sa pagsali sa mga umiiral nang user namespace at process pid namespaces. Upang kontrolin ang koneksyon ng mga namespace, idinagdag ang mga flag na "--userns", "--userns2" at "-pidns".
Ang tampok na ito ay hindi gumagana sa setuid mode at nangangailangan ng paggamit ng isang hiwalay na mode na maaaring gumana nang hindi nakakakuha ng mga karapatan sa ugat, ngunit nangangailangan ng pag-activate
mga namespace ng user sa system (naka-disable bilang default sa Debian at RHEL/CentOS) at hindi ibinubukod ang posibilidad para sa rim ng mga paghihigpit ng "user namespaces". Kasama rin sa mga bagong feature ng Bubblewrap 0.4 ang kakayahang bumuo gamit ang musl C library sa halip na glibc at suporta para sa pag-save ng impormasyon ng namespace sa isang file na may mga istatistika sa JSON na format.
Pinagmulan: opennet.ru
