toleo jipya la zana ya zana , iliyoundwa ili kupanga kazi ya mazingira ya pekee katika Linux na kufanya kazi katika kiwango cha matumizi ya watumiaji wasio na upendeleo. Kiutendaji, Bubblewrap hutumiwa na mradi wa Flatpak kama safu ya kutenga programu zilizozinduliwa kutoka kwa vifurushi. Nambari ya mradi imeandikwa katika C na iliyopewa leseni chini ya LGPLv2+.
Kwa kutengwa, teknolojia za uboreshaji za vyombo vya Linux za jadi hutumiwa, kulingana na matumizi ya vikundi, nafasi za majina, Seccomp na SELinux. Ili kutekeleza shughuli zilizobahatika kusanidi kontena, Bubblewrap inazinduliwa ikiwa na haki za mizizi (faili inayoweza kutekelezeka yenye alama ya suid) na kisha kuweka upya haki baada ya kontena kuanzishwa.
Uanzishaji wa nafasi za majina ya watumiaji katika mfumo wa nafasi ya majina, ambayo hukuruhusu kutumia seti yako tofauti ya vitambulisho kwenye vyombo, haihitajiki kwa operesheni, kwani haifanyi kazi kwa chaguo-msingi katika usambazaji mwingi (Bubblewrap imewekwa kama utekelezwaji mdogo wa suid. kikundi kidogo cha uwezo wa nafasi za majina ya watumiaji - kuwatenga vitambulishi vyote vya watumiaji na kuchakata kutoka kwa mazingira, isipokuwa hii ya sasa, CLONE_NEWUSER na CLONE_NEWPID modi zinatumika). Kwa ulinzi wa ziada, unaotekelezwa chini ya udhibiti
Programu za Bubblewrap huzinduliwa katika hali ya PR_SET_NO_NEW_PRIVS, ambayo inakataza kupata mapendeleo mapya, kwa mfano, ikiwa bendera ya setuid iko.
Kutengwa katika kiwango cha mfumo wa faili kunakamilishwa kwa kuunda nafasi mpya ya jina kwa chaguo-msingi, ambapo mgawanyiko wa mizizi tupu huundwa kwa kutumia tmpfs. Ikihitajika, sehemu za nje za FS zimeambatishwa kwenye kizigeu hiki katika hali ya "mount -bind" (kwa mfano, inapozinduliwa na chaguo la "bwrap -ro-bind /usr /usr", kizigeu cha /usr kinatumwa kutoka kwa mfumo mkuu. katika hali ya kusoma tu). Uwezo wa mtandao una mipaka ya kufikia kiolesura cha nyuma kwa kutengwa kwa rafu ya mtandao kupitia CLONE_NEWNET na bendera za CLONE_NEWUTS.
Tofauti kuu kutoka kwa mradi sawa , ambayo pia hutumia mtindo wa uzinduzi wa setuid, ni kwamba katika Bubblewrap safu ya kuunda kontena inajumuisha tu uwezo wa chini unaohitajika, na utendakazi wote wa hali ya juu unaohitajika kwa kuendesha programu za picha, kuingiliana na eneo-kazi na kuchuja simu kwa Pulseaudio hutolewa nje Flatpak na hutekelezwa. baada ya marupurupu kuwekwa upya. Firejail, kwa upande mwingine, inachanganya kazi zote zinazohusiana katika faili moja inayoweza kutekelezwa, ambayo inafanya kuwa vigumu kukagua na kudumisha usalama kwenye .
Toleo jipya linajulikana kwa utekelezaji wa usaidizi wa kuunganisha nafasi zilizopo za majina ya watumiaji na kuchakata nafasi za majina za pid. Ili kudhibiti muunganisho wa nafasi za majina, bendera za "--userns", "--userns2" na "-pidns" zimeongezwa.
Kipengele hiki hakifanyi kazi katika hali ya kuweka na kinahitaji matumizi ya hali tofauti ambayo inaweza kufanya kazi bila kupata haki za mizizi, lakini inahitaji kuwezesha.
nafasi za majina ya watumiaji kwenye mfumo (zimezimwa kwa chaguo-msingi kwenye Debian na RHEL/CentOS) na haizuii uwezekano huo. kwa vikwazo vya "nafasi za majina ya watumiaji" rim. Vipengele vipya vya Bubblewrap 0.4 pia vinajumuisha uwezo wa kuunda kwa kutumia maktaba ya musl C badala ya glibc na usaidizi wa kuhifadhi maelezo ya nafasi ya majina kwenye faili iliyo na takwimu katika umbizo la JSON.
Chanzo: opennet.ru
